首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

沿袭struts2中StrutsTypeConverter实现类型转换

2012-07-02 
继承struts2中StrutsTypeConverter实现类型转换1.?创建含有需要类型转化对象的JSP页面(input.jsp,里面表单

继承struts2中StrutsTypeConverter实现类型转换

1.?创建含有需要类型转化对象的JSP页面(input.jsp,里面表单里含有自定义类)
<body>
? <h3><font color="red">使用逗号将点的两个坐标分隔开</font></h3>
?<s:form action="Register">
???
<s:textfield name="point" label="point"/>
??<s:textfield name="age" label="age"/>
??<s:textfield name="username" label="username"/>
??<s:textfield name="date" label="birthday"/>
???
<s:submit label="submit"></s:submit>
?</s:form>
??? </body>
2.?创建信息输出JSP页面(out.jsp)
<html>
?? <head>
??? ??<title>My JSP 'output.jsp' starting page</title>
? ?</head>
?? <body>
??point:<s:property value="point"/><br>
??age:<s:property value="age"/><br>
??username:<s:property value="username"/><br>
??date:<s:property value="date"/><br>
? ? </body>
</html>
3.?创建上面JSP页面中需要类型转换的对象所对应的类(Point.java)
public class Point
{
?private int x;
?private int y;
?//getter、setter方法
}
4.?创建form提交接受的Action(RegisterAction.java)
public class RegisterAction extends ActionSupport
{
?private Point point;
?private int age;
?private String username;
?private Date data;
//getter、setter方法
?
?@Override
?public String execute() throws Exception
?{
??return SUCCESS;
?}
}
5.?Struts.xml中配置RegisterAction
<action name="Register" + x + ",y=" + y + "]";
??return result;
?}
}

引入参数中的toType表示的是目标类型(是字符串类型还是Point类型),
当客户端string提交到pointConvert这个action时候(即:toType==Point.class),value指的是textfield中填写的字符串。
对if(Point.class==toType)过程解释:
(1) String[] str=(String[])value;-----------------将value显示转化为字符数组后赋值为数组str[];
(2)String[] paramValues=str[0].split(",");-------取出str[]的第一个元素,即:str[0],当textfield里填写的是“20,40”,str[0]里的内容也就是一个字符串“20,30”,然后通过str[0].split(“,”)将字符串“20,30”以逗号为界限拆分成一个数组并赋值给paramValues[],这时paramValues[]里内容是{“20”,”30”};
(3) int x=Integer.parseInt (paramValues [0]);-----将字符串类型的“20”转换为integer型赋值给x;
7.?配置属性文件使得让Point属性由PointConvert处理:
⑴?在和要被convert的类的同目录下新建一个文件:
RegisterAction -conversion.properites。
RegisterAction --------要转换的属性所在的类的类名
-conversion.properies-----固定格式
⑵填写属性文件内容:
point=com.test.converter.PointConvert
point--------具体要转换哪一个属性
com.test.converter.PointConverter-----具体用那个convert类来转换point
注意:如果对多个属性进行转换可以添加多个如point=com.test.converter.PointConvert
形式的内容。

8.?定义全局类型转换
上面所演示的是局部类型转换方式,假如有四个action,分别为PointAction1、PointAction2、PointAction2、PointAction4,每个PointAction里面都有一个相同的point属性需要转换,所以必须在com.test.action包下面创建四个属性文件指定每个PointAction都需要ActionConvert类进行转换,即:
PointAction1-coversion.properties,PointAction2-coversion.properties, PointAction3-coversion.properties,PointAction4-coversion.properties
如果更多类需要转换,显然这种方式比较累人,这种情况可以考虑使用全局类型转换。
配置步骤:
(1)? 在src目录下创建全局属性文件,文件名为:
xwork-conversion.properties 文件名是固定不变的。
(2) 全局属性文件内容:
com.test.bean.Point=com.test.converter.PointConverter
等号左边是要转换的类所在的包名,右边是具体用那个convert类来转换point。

热点排行