struts2的Converter所起的作用是在页面数据和Java所支持的数据之间进行转换,在页面中,我们最常用的就是string类型。但是在Java类中,
像int,Date,Map,List等类型,直接将页面所传来的string类型值赋给这些变量,就会引异常,因此在赋值前必须进行类型转换。struts2的Converter就是这个作用。struts为我们准备了基本的Converter,如基本类型(int,double等),还有日期类型,各种集合类型。
不过struts2也给用户留下了自定义转换器的接口,通过继承OGNL.DefaultTypeConverter类,我们可以定义一个转换类。
下面仿照一个在页面中画点的项目说明。假设用户可以在jsp页面中输入一个点的坐标,如(10,10),在后台我们就有一个Point类的实例Point(10,10)
与之对应。要想做到这点,我们就需要利用类型转换了,首先定义一个Point类,然后再定义一个PointConverter类用来进行类型转换。在整一PointAction做响用。Point类的源码如下:
PointConverter的源码:
PointAction的源码:
在tutorial目录下建立PointAction-conversion.properties文件:
作用是告诉struts2框架在给Point用setter方法赋值时,用tutorial.PointConverter进行转换。其中key是action中需要转换的属性,value要包括包名。
struts.xml片段:
在point下建立point.jsp文件,如下:
发布,运行即可。