论坛首页 Java企业应用论坛

对于moxie的"WebWork教程"补充 - [类型转化]

浏览 25580 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-03-07  
yufan_shi 写道
指定类型的问题解决了,通过写了一个扩展自WebWorkTypeConverter的自定义转换器,然后结合form里把指定的属性设置为需要转型的子类型而完成的。
我在xwork-default-conversions.properties里配置了一个全局的类型转换器。(不知道为什么,Action级别的根据field的配置始终行不通,是不是这个文件里不能配置成someField.someObject=xxx.converter?)



我终于解决了这个问题,确实可以通过Converter来实现子类型的创建。这样就能方便的实现界面上的选择与业务层的对象多态的关联了。

yufan_shi 写道

不过,我发现这么一来虽然能把类型转换成期望的子类型,但是,该类型的field还是不能被设置。如以上标单中的coupon.discount.amount,并不能设置action里coupon属性的discount属性的amount属性。。。

另外,我还单独模仿Jert里的PrametersInterceptor写了一个Interceptor来吧coupon.discount放到coupon.discount.amount的前头,不然会出现异常。

这个问题,其实是由于我不熟悉Webwork自带PrametersInterceptor的原理,使用了PrametersInterceptor后,并没有去掉原来自带的那个,导致action的setters被调用了两遍,第一次对coupon.discount进行转型后,用coupon.discount.amount进行了绑定,第二次却是在绑定后,又进行了一次转型。也就是说变成了这样的顺序
coupon.discount = new SomeDiscount();
coupon.discount.amount = amount;
coupon.discount.amount = amount;
coupon.discount = new SomeDiscount();

这样看起来,当然是好像field没有被设置,真是个低级错误
0 请登录后投票
   发表时间:2005-03-07  
原来ognl能够对应到不同的abstract class实现, 并且设置相应的属性, 这样确实很方便, 以后遇到这种情况就可以放心地使用了, 不错不错.
0 请登录后投票
   发表时间:2005-03-07  
Quake Wang 写道
原来ognl能够对应到不同的abstract class实现, 并且设置相应的属性, 这样确实很方便, 以后遇到这种情况就可以放心地使用了, 不错不错.

那毕竟还是要写一个自己的从classname这个String value到instance的转换器。
不过,这其实可以写一个通用的。就是要在form里写长长的class name,感觉。。。
0 请登录后投票
   发表时间:2006-04-04  
我说怎么老找不到这方面的文档呢.
原来是归到xwork里的.
0 请登录后投票
   发表时间:2006-04-04  
yufan_shi 写道
Quake Wang 写道
原来ognl能够对应到不同的abstract class实现, 并且设置相应的属性, 这样确实很方便, 以后遇到这种情况就可以放心地使用了, 不错不错.

那毕竟还是要写一个自己的从classname这个String value到instance的转换器。
不过,这其实可以写一个通用的。就是要在form里写长长的class name,感觉。。。

如果不是通用型的转换器,就没必要在form里指定。
在converter里switch case 吧。
0 请登录后投票
   发表时间:2006-04-14  
Quake Wang 写道
To wolfsquare
你说的这个问题,可以根据你的应用情况,看哪种方式是比较常见的转换规则,那么把这个规则定成
引用

2. Application-wide conversion rules
在classpath root下面写一个xwork-conversion.properties:
java.util.Date=com.javaeye.core.webwork.converter.DateConverter


另外的一个转换,可以写成Class-specific conversion rules :
otherDate=com.javaeye.core.webwork.converter.OtherDateConverter


这个我没实现成功,能否给一个简单的例子,谢谢!
0 请登录后投票
   发表时间:2006-04-17  
可以把获得的DateString 放到一堆正则表达式里去匹配,然后再根据结果,对SimpleDateFormat设置相对应的Pattern

Quake Wang 写道
To wolfsquare
你说的这个问题,可以根据你的应用情况,看哪种方式是比较常见的转换规则,那么把这个规则定成
引用

2. Application-wide conversion rules
在classpath root下面写一个xwork-conversion.properties:
java.util.Date=com.javaeye.core.webwork.converter.DateConverter


另外的一个转换,可以写成Class-specific conversion rules :
otherDate=com.javaeye.core.webwork.converter.OtherDateConverter
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics