该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间: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没有被设置,真是个低级错误 |
|
返回顶楼 | |
发表时间:2005-03-07
原来ognl能够对应到不同的abstract class实现, 并且设置相应的属性, 这样确实很方便, 以后遇到这种情况就可以放心地使用了, 不错不错.
|
|
返回顶楼 | |
发表时间:2005-03-07
Quake Wang 写道 原来ognl能够对应到不同的abstract class实现, 并且设置相应的属性, 这样确实很方便, 以后遇到这种情况就可以放心地使用了, 不错不错.
那毕竟还是要写一个自己的从classname这个String value到instance的转换器。 不过,这其实可以写一个通用的。就是要在form里写长长的class name,感觉。。。 |
|
返回顶楼 | |
发表时间:2006-04-04
我说怎么老找不到这方面的文档呢.
原来是归到xwork里的. |
|
返回顶楼 | |
发表时间:2006-04-04
yufan_shi 写道 Quake Wang 写道 原来ognl能够对应到不同的abstract class实现, 并且设置相应的属性, 这样确实很方便, 以后遇到这种情况就可以放心地使用了, 不错不错.
那毕竟还是要写一个自己的从classname这个String value到instance的转换器。 不过,这其实可以写一个通用的。就是要在form里写长长的class name,感觉。。。 如果不是通用型的转换器,就没必要在form里指定。 在converter里switch case 吧。 |
|
返回顶楼 | |
发表时间: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 这个我没实现成功,能否给一个简单的例子,谢谢! |
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |