struts2类型转换
url中传递的参数都是字符串,struts2自动进行简单的类型转换,但是当转换成特殊的类型时,struts往往不能很好进行转换。
java.util.Date类型:
可以在actiong的结果jsp中写<s:date name="birthday" format="yyyy-mm-dd"/>
然后action中定义个Date类型的属性birthday,当访问...action?birthday?birthday=1993-01-01时jsp中的标签就会输出1993-01-01.
List类型:
有时候我们可能需要接受一个参数,这个参数可能有多个值,比如表单中的多选框。这时后台可以用list来接收。
Ponit类型:
这时候需要自定义一个类型转换器:
package cn.orlion.converter; import java.awt.Point; import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter; public class MyPointConverter extends DefaultTypeConverter{ public Object converterValue(Object value , Class toType){ if (Point.class == toType) { Point p = new Point(); String[] str = (String[])value; String[] xy = str[0].split(","); p.x = Integer.parseInt(xy[0]); p.y = Integer.parseInt(xy[1]); return p; } return super.convertValue(value , toType); } }
下一步就是要绑定到struts2中,如果值绑定给用到的action只需要在该action的包下新建一个文件:DemoAction-conversion.properties,内容为p=cn.orlion.converter.MyPointConverter。其中DemoAction为action的名字(根据实际取名)p为action中定义的Point类型的属性名(private Point p;)cn.orlion.converter.MyPointConverter为转换器类名
如果要注册为全局的则需要在src目录下创建一个文件:xwork-conversion.properties内容为:java.awt.Point=cn.orlion.converter.MyPointConverter。