如何在struts 2中使用枚举参数?

wds*_*wds 6 java enums struts2

我正在尝试使用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;
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当试图使用它时,我得到了一个xwork转换错误,并且该操作本身甚至都没有执行.我可以按原样工作,还是应该自己提供setModule(String)?

编辑:我正在使用struts 2.1.6我正在尝试的URL:/test.action?module = value1

Gar*_*vis 5

它应该立即将字符串绑定到枚举.我认为枚举类型转换器已经处于默认配置,因为我认为2.1.x.

  • 您使用的是什么版本的struts 2?

如果你不确定以下是我xwork-conversion.properties的2.0.14应用程序

java.lang.Enum = com.opensymphony.xwork2.util.EnumTypeConverter
Run Code Online (Sandbox Code Playgroud)

编辑:在回复评论时,如果您需要忽略分配枚举的案例,您有以下选择:

  • 将枚举的值更改为小写 - 不是很好的样式,可能会使您的代码看起来有点奇怪
  • 为java.lang.Enum编写一个新的不区分大小写的转换器(只需复制xwork one和toUpper输入,我猜)
  • 为此特定情况添加新的setModule(String)