WebWork 2 : 类型转换
This page last changed on Nov 14, 2004 by plightbo.
感谢XWork让WebWork拥有非常先进的类型转换能力. 更多内容参见Type Conversion. 一个简单的例子当你需要将一个字符串转换成为一个更为复杂的对象时, 类型转换能发挥强大的作用. 由于Web是类型不可知的(type-agnostic)(HTTP中任何类型都是字符串), 因此WebWork的类型转换功能非常有用. 例如, 如果你提示用户使用字符串格式("3, 22")输入一个坐标, 你需要让WebWork完成String到Point和Point到String的转换.
使用"point"的例子, 如果活动(或者其他需要设置属性的组合对象)有一个对应的className-conversion.properties文件, WebWork会使用配置的类型转换器进行该类和字符串的转换. 因此将"3, 22"转换成new Point(3, 22)只需在ClassName-conversion.properties中加入下列内容: point = com.acme.PointConverter # 注意: PointerConverter必需实现ognl.TypeConverter # 或继承ognl.DefaultTypeConverter 你编写的类型转换器必须检查被用于转换哪种类型. 由于全部是与String进行相互转换, 需要将转换方法分为两部分: 一个将String转换为Point, 另一个将Point转换为String. 这些完成后, 你可以引用point对象(<ww:property value="point"/>)并且它将输出为"3, 22". 同样的, 如果你将它提交到活动, 它将再次转换成Point.注意: 类型转换不能作为i18n的替代品. 不推荐使用这一特性输出相应的日期格式. 相反, 你应该使用WebWork的i18n功能(并且研究一下JDK中MessageFormat的JavaDoc)来了解如何使用相应正确的日期格式. 帮助类/a>WebWork附带了一个帮助类以便更容易实现类型转换. 该类是com.opensymphony.webwork.util.WebWorkTypeConverter. 它编写类型转换器更加容易. |
![]() |
Document generated by Confluence on Dec 14, 2004 16:36 |