`

struts2类型转换深入总结

阅读更多
总结:struts2的类型转换,例如jsp界面中定义了出生日期birthday,在action处理类中定义了Date类型的属性birthday。而我们以前使用request.getParameter()方法从界面上获取的值都是字符串类型的。在界面点击提交之后,struts2从界面上获取了birthday的值之后发现在action中birthday被定义为Date类型的,那么struts2就试着把得到的值转换成Date类型的然后赋给action类里的这个属性。当它试图没有转换成功之后就会报错(例如你在界面上birthday那个框里输入了aaa,它根本不可能把aaa转换成Date类型的),下面是一个错误示例:(见附件图例),但是即使没有转换成功,这个值依然会赋给action里birthday这个属性,在结果页面上从action的birthday属性上取值依然会取到aaa



下面讲解坐标属性的类型转换(界面上有一个point输入框,action类里有一个Point point属性,这个属性是引用类型的,Point类里有x和y两个int型的属性,想要例如在界面上输入5,2然后分别把5和2赋给x和y):


重点查看附件类型转换示例(主要是以坐标点属性为示例):

附件中的Struts2TypeConversion.zip主要演示了对坐标单个(一个一个处理)类型转换处理以及区分基本的类型转换类DefaultTypeConverter和struts2自带的类型转换类StrutsTypeConverter的使用区别(一般情况下我们都用StrutsTypeConverter更好一点)。Struts2TypeConversion2.zip主要演示对坐标进行批量类型转换处理。Struts2TypeConversion3.zip是直接转换的情况,不需要用到转换器。(struts2类型转换就这3中情况)。
Struts2TypeConversion4.zip是全局类型转换示例(针对一个需要转换的实体只配置一次)。


重点说明:针对Struts2TypeConversion3.zip直接转换的情况,当把point.x和point.y提交到服务器的时候,服务器发现是以点分割的。那么它就去action里去找名字为point的属性,然后发现后面还有个x,那么它就又会去point里去找setX()方法,找到就吧x的值赋进去。
这种类型转换最简单了,不需要配置文件,也不需要引用任何转换器(它会一层一层自动往里找,直到找到最后一个属性的set方法,并把值赋进去)。这也是struts2的智能之处。
这里需要注意的是,这种转换之后在页面上显示的时候,必须要在相应的bean文件里重写toString()方法,否则结果不能在页面上正常显示。

针对Struts2TypeConversion4.zip是全局类型转换的情况,如果想使用全局类型转换器(就是此应用里遇到的所有词类型变量,都用此转换器来转换)。那么这个配置文件必须放到src下面,而且文件名字叫xwork-conversion.properties(必须是这个)
配置文件里的等号左边是需要转换的类型,右边是所使用的转换器名称
  • 大小: 28.5 KB
  • 大小: 21.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics