论坛首页 Java版 Struts

请教:Struts 2.0的Action中,如何自动组装enum类型的参数?

浏览 1537 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2008-06-24
我的问题是,
一个UpdateAction.java,其中有参数User user ; 而User有个属性叫Sex sex;而Sex是个枚举类。
现在修改用户的JSP页面上,性别参数名写成user.sex,值写成MALE;
提交后,UpdateAction中,对于User的其他属性,都可以接收组装,而Sex sex属性却怎么也组织不起来。
请问,像我这种情况,
1. JSP页面上的性别 参数名 和 值 该如何写?
2. Action中或者User中该对user/sex属性做什么特殊处理?

谢谢。
---------------------
我想现在用jdk5的人应该很多,这种情况应该常见才是,而我在GOOGLE上却搜不到相关的问题。。。。
   
时间:2008-06-24
是否应该采用conversion的方式,将页面传递进来的String类型的性别转换成对应的枚举类型之后,再set到sex属性呢?
   
0 请登录后投票
时间:2008-06-24
将页面转过来的数据进行类型的转换·在通过一个实对象进行封装·就OK·了·
   
0 请登录后投票
时间:2008-06-25
楼主可能用的是老版本,据我所知新版本是内置了枚举转化器,关于jsp页面上怎么显示,可以看我提交的这个patch
http://jira.opensymphony.com/browse/XW-647
   
0 请登录后投票
时间:2008-06-25
用个convertor就可以了.
   
0 请登录后投票
时间:2008-06-25
ray_linn 写道
用个convertor就可以了.

是converter不是convertor
com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter里面已经有了,这种通用的转化器没必要自己写.
   
0 请登录后投票
时间:2008-07-02
quaff 写道
ray_linn 写道
用个convertor就可以了.

是converter不是convertor
com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter里面已经有了,这种通用的转化器没必要自己写.


我的struts是2.0.11版本,xwork 是 2.0.4版本,
发现xwork里是有个 com.opensymphony.xwork2.util.EnumTypeConverter

我在我的WEB-INF/classes/下建立了一个文件 xwork-conversion.properties
内容如下:
java.lang.Enum = com.opensymphony.xwork2.util.EnumTypeConverter

接着,我写了个测试的action, userTest, 在IE中调用:

http://localhost:8080/userTest.action?user.name=XXX&user.sex=MALE

发现action中的user只会得到name的属性值,sex属性值还是不能设置进去。

但是,至少不会出错,会得到一个User对象实例了。

如果,URL中,user.sex的值随便写(不再枚举类Sex的值范围内),如okXXX,
http://localhost:8080/userTest.action?user.name=XXX&user.sex=okXXX
这样调用,会出错,根本得不到一个User的对象实例,

看来,是有点接近我要的结果了。


请问,还有什么地方要做工作吗?


谢谢!!
   
0 请登录后投票
时间:2008-07-03
关注一下这个帖子。
我的项目里也遇到这个问题,还没时间解决。暂时用笨办法将就。
不过可以肯定OgnlValueStack肯定已经包含了Enum的Convertor。
   
0 请登录后投票
时间:2008-07-03
quaff 写道
ray_linn 写道
用个convertor就可以了.

是converter不是convertor
com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter里面已经有了,这种通用的转化器没必要自己写.



converter和convertor在英文里是完全一样的好不好?
   
0 请登录后投票
时间:2008-07-03
ray_linn 写道
quaff 写道
ray_linn 写道
用个convertor就可以了.

是converter不是convertor
com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter里面已经有了,这种通用的转化器没必要自己写.



converter和convertor在英文里是完全一样的好不好?

又来挖坟了
就算converter不是一个单词,xwork叫这个就是这个
就像http header的referer是referrer拼写错误一样
   
0 请登录后投票
论坛首页 Java版 Struts

跳转论坛:
JavaEye推荐