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

发布于 2024-08-08 18:03:05 字数 452 浏览 3 评论 0原文

我试图让 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

I'm trying to get an Action in Struts 2 to work with an Enum as an input parameter. What I've done so far looks like:

public TestAction {
  public enum Module {
    VALUE1;
  }

  private Module module;

  public void setModule(Module module) {
    this.module = module;
  }
  public Module getModule() {
    return module;
  }
}

But when trying to use this I get an xwork conversion error, and the action itself doesn't even execute. Can I make this work as is, or should I provide setModule(String) myself?

Edit: I'm using struts 2.1.6
The URL I'm trying: /test.action?module=value1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

゛时过境迁 2024-08-15 18:03:05

它应该立即将字符串绑定到枚举。我认为从 2.1.x 开始,枚举类型转换器就一直处于默认配置。

  • 你使用什么版本的struts 2?

如果您不确定以下内容是否在我的 2.0.14 应用程序中的 xwork-conversion.properties

java.lang.Enum = com.opensymphony.xwork2.util.EnumTypeConverter

编辑:作为对评论的回应,如果您需要忽略分配的大小写一个枚举,你有以下选择:

  • 将枚举的值更改为小写 - 这不是很好的风格,并且可能使你的代码看起来有点奇怪
  • 为 java.lang.Enum 编写一个新的不区分大小写的类型转换器(只需复制 xwork 的)并在我猜的输入上方)
  • 为此特定情况添加一个新的 setModule(String)

It should bind a string to a enum straight away. I think the enum type converter has been in the default configuration since I think 2.1.x.

  • What version of struts 2 are you using?

if you are unsure the following is in my xwork-conversion.properties in a 2.0.14 app

java.lang.Enum = com.opensymphony.xwork2.util.EnumTypeConverter

EDIT: In response to the comment, if you need to ignore case for assigning an enum you have the following choices:

  • Change the value of enum to actaully be lower case - not great style and could make your code look a bit weird
  • Write a new case insensitive type converter for java.lang.Enum (just copy the xwork one and toUpper the input I guess)
  • add a new setModule(String) for this specific case
漆黑的白昼 2024-08-15 18:03:05

我只是在从操作转发到重定向操作(而不是转发操作)时遇到类似的问题,Struts 无法正确识别我正在使用参数 List 并且我必须使用将 String 参数转换为 List 的代理方法。

I just encounter a similar issue when forwarding from an action to a redirect action (instead of an action forward), Struts will not properly recognize I am using a parameter List<Enum> and I had to use a proxy method to convert from the String parameter into a List<Enum>.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文