我正在尝试使用Struts 2中的Action来使用Enum作为输入参数。到目前为止我所做的一切看起来像是:
public TestAction {
public enum Module {
VALUE1;
}
private Module module;
public void setModule(Module module) {
this.module = module;
}
public Module getModule() {
return module;
}
}
但是当我尝试使用它时,我得到了一个xwork转换错误,并且该操作本身甚至都没有执行。我可以按原样使用,或者我应该自己提供setModule(String)吗?
编辑:我正在使用struts 2.1.6 我正在尝试的URL:/test.action?module = value1
答案 0 :(得分:5)
它应该立即将字符串绑定到枚举。我认为枚举类型转换器一直处于默认配置,因为我认为2.1.x。
如果您不确定以下内容是否位于我的xwork-conversion.properties
2.0.14应用
java.lang.Enum = com.opensymphony.xwork2.util.EnumTypeConverter
编辑:在回复评论时,如果您需要忽略分配枚举的案例,您有以下选择:
答案 1 :(得分:0)
我在从操作转发到重定向操作(而不是操作转发)时遇到类似的问题,Struts无法正确识别我正在使用参数List<Enum>
而我必须使用代理方法来将String参数转换为List<Enum>
。