Struts2类型转换

来源:互联网 发布:2015淘宝客源码程序 编辑:程序博客网 时间:2024/03/29 13:35

Struts2在进行输入校验与业务逻辑调用之前会先对界面传来的数据进行类型转化。像Action类中定义的int,String等基础类型的属性,只要其属性名与JSP界面上的name属性对应的值相同,则 Struts2自动会将其转换。然而Struts2不会转化对象类型。必须程序员自定义对象类型的转换。

以下以Point点对象为例来自定义对象类型的转换。

此例我们在input.jsp中通过3个文本框输入3个坐标,返回到output.jsp中希望用一个文本框输出3个坐标。

前台表单:input.jsp


struts.xml中配置:

 

处理类:
PointAction.java

 

  

 

定义类型转换的配置:

Action类所在的同一包下建立PointAction-conversion.properties文件,(命名规则:Action类名-conversion.properties)

写入如下一句即可:point=com.test.converter.PointConverter

相当于告知Struts2,若在PointAction类中碰到point这个非基础属性,则采用com.test.converter.PointConverter类中的方法来转换

自定义的类型转换类PointConverter.java如下:

 

 

 

Point.java

 

 

 

 

执行流程如下:当表单请求提交到PointAction类中时,Struts2通过各个属性对应的setter方法将属性值设置上去,一旦发现要设置的是个对象(此处为Point对象),就去 PointAction- conversion.properties文件中寻找是否有自定义的Point对象类型的转换。这里我们在PointAction- conversion.properties中配置了point=com.test.converter.PointConverter,就告诉了 Struts2,遇到setPoint(Point point)不会转时采纳PointConverter类中定义的方法来转换。PointConverter类中第一个方法将输入的 3个字符串类型的坐标转换为一个集合类型后返回,返回值就是PointAction中setPoint要设置的List<Point> point。第二个方法是将集合类型转换为字符串类型返回,当output.jsp中输出坐标时,实际上调用了PointAction的 List<Point> getPoint()方法,而此方法返回的List<Point>被换成了String类型,所以正常输出。

原创粉丝点击