Struts2之类型转换

来源:互联网 发布:windows快速返回桌面 编辑:程序博客网 时间:2024/04/19 05:32

Strust2其实基础数据类型,如int,long,String...之类的东西已经内部实现转换了,如果自己有特殊需求,需要转换一个对象出来的话,就需要自己实现类型的转换。

 

如A页面有一输入框需要提交一个长方形的对象(该对象有高度和宽度属性)到RectAction中,并且在页面B中显示该长方形的属性。

 

结构:

WEBROOT ->A页面,B页面

ClassPath->com.test.bean.Rect , com.test.action.RectAction , com.test.action包下RectAction-conversion.properties , com.test.converter.RectConverter

 

如图:

 

首先是A页面输入了长方形的属性(60,80),提交给RectAction后,Struts2会在调用Set方法之前检测一下是否有conversion的属性文件,如果有,则进行类型转换。

 

A页面如下:

 

B页面如下:


 

第一步建立BO业务逻辑对象com.test.Rect类代码:

第二步建立com.test.action.RectAction代码:

第三步建立类型转换配置文件,局部类型转换则在com.test.action包下RectAction-conversion.properties内容如下:

rect=com.test.converter.RectConverter(表示RectAction下的rect属性将进行类型转换)

或者建立全局的类型转换配置文件,在classes下建立xwork-conversion.properties内容如下:

com.test.bean.Rect=com.test.converter.RectConverter(表示只要所有的Action类中有Rect属性的都将进行类型转换)

注意:当全局和局部并存的时候,局部的优先级别比全局的更高。

第四步建立com.test.converter.RectConverter代码:

上面是继承自DefaultTypeConverter类,上面需要自己判断toType究竟是客户端到服务端还是服务端到客户端。Struts2还提供了一个更简单的类型转换抽象类StrutsTypeConverter。代码如下:

 

---------------------------------------------------------------------------------------------------------------------

如上写了一大堆的代码,有没有更简单的方法呢?

是有的!

在A页面里可以这样写了以后系统会自动的将rect的width和height进行赋值,并且将rect对象的toString返回给B页面,这样就可以省略converter了:

 

今日题目:如果要转换的是一个长方形对象集合呢?该如何做呢?大家想想吧。