Struts2入门到精通七——————类型转换器


一、全局类型转换器

1、新建Struts2项目

2、org.zttc.itat.model包下新建

       Message.java

package org.zttc.itat.model;

public class Message {
	private int id;
	private String title;
	private String content;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	
	
	
}

Point.java

package org.zttc.itat.model;

public class Point {
	private int x;
	private int y;
	public int getX() {
		return x;
	}
	public void setX(int x) {
		this.x = x;
	}
	public int getY() {
		return y;
	}
	public void setY(int y) {
		this.y = y;
	}
	
	
}


3、在org.zttc.itat.action包下新建

MessageAction.java

package org.zttc.itat.action;

import java.lang.reflect.InvocationTargetException;

import org.apache.commons.beanutils.BeanUtils;
import org.zttc.itat.dao.MessageDao;
import org.zttc.itat.model.Message;
import org.zttc.itat.model.Point;

import com.opensymphony.xwork2.ModelDriven;

public class MessageAction implements ModelDriven<Message>{
	
	private Message msg;
	private Point point;
	
	
	public Point getPoint() {
		return point;
	}

	public void setPoint(Point point) {
		this.point = point;
	}

	public Message getMsg() {
		return msg;
	}

	public void setMsg(Message msg) {
		this.msg = msg;
	}

	public String addInput(){
		
		return "success";
	}
	
	public String add(){
		
		return "success";
	}

	public String updateInput(){
		try {
			MessageDao md=new MessageDao();
			Message tmsg=md.load();
			BeanUtils.copyProperties(msg, tmsg);
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "success";
	}
	
	public Message getModel() {
		if(msg==null) msg= new Message();
		return msg;
	}
}

4、在org.zttc.itat.converter包下新建

PointConverter.java

package org.zttc.itat.converter;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;
import org.zttc.itat.model.Point;
/*
 * 要为某个对象增加相应的类型转换器,首先得创建一个类继承StrutsTypeConverter
 * */
public class PointConverter extends StrutsTypeConverter {
	/*
	 * 完成字符串到对象的转换
	 *
	 */
	@Override
	public Object convertFromString(Map arg0, String[] values, Class toClass) {
		Point p =new Point();
		if(values.length<=1) {
			String str=values[0];
			
			String[] cods =str.split(",");
			
			p.setX(Integer.parseInt(cods[0]));
			p.setY(Integer.parseInt(cods[1]));
		}
		
		return p;
	}
	
	/**
	 * 完成对象到字符串的转换
	 */
	
	@Override
	public String convertToString(Map arg0, Object o) {
		Point p =(Point) o;
		return p.getX()+","+p.getY();
	}

}

5、在WEB-INF/Message  下面新建

     updateInput.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Message updateInput</h1>

<s:debug/>

<form action="Message_add.action" method="post">
	Id:<input	type="text" name="id" value=" <s:property value="id"/>"/>	<br/>
	Title:<input	type="text" name="title"  value=" <s:property value="title"/>"/>	<br/>
	Content:<input	type="text" name="content"   value=" <s:property value="content"/>"/>	<br/>
	Point:<input type="text" name="point" /><br/>
	<input type="submit" />
</form>
</body>
</html>

add.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Message Add</h1>

${msg.id }---${msg.title}---${msg.content}

<br/>

<s:property value="point"/>
</body>
</html>

6、struts.xml   如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
	<constant name="struts.action.extension" value="action,ejb,html"/>
	<constant name="struts.configuration.xml.reload" value="true"/>
    <package name="default" namespace="/" extends="struts-default">
    
    
    <!-- 	<action name="user_addInput" class="org.zttc.itat.action.UserAction" method="addInput">
    		<result name="success">/WEB-INF/user/addInput.jsp</result>
    	</action>
    	<action name="user_add" class="org.zttc.itat.action.UserAction" method="add">
    		<result name="success">/WEB-INF/user/add.jsp</result>
    	</action>
    	<action name="user_list" class="org.zttc.itat.action.UserAction" method="list">
    		<result name="success">/WEB-INF/user/list.jsp</result>
    	</action>  -->
    	
    	
    <!-- <action name="user"	class="org.zttc.itat.action.UserAction">
    	<result	name="add">/WEB-INF/user/add.jsp</result>
    	<result	name="addInput">/WEB-INF/user/addInput.jsp</result>
    	<result name="list">/WEB-INF/user/list.jsp</result>
    </action> -->
    
    
    <action name="*_*" class="org.zttc.itat.action.{1}Action" method="{2}">
    	<result name="success">/WEB-INF/{1}/{2}.jsp</result>
    	<result type="redirect" name="r_list">/{1}_list.action</result>
    </action>
    </package>
</struts>



在浏览器中输入:http://localhost:8080/struts01_8/Message_updateInput.action

在Point  栏中输入 8,88

浏览器跳转到http://localhost:8080/struts01_8/Message_add.action

Message Add

12--- 小白兔--- 我是大白兔 
8,88




二、局部类型转换器









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值