将枚举映射到弹簧形式以不同的方式选择

时间:2013-06-05 13:35:23

标签: java spring enums

我有枚举设置

public enum MyEnum {

    A("AND"), //
    I("INTER");
}

我有弹簧形式:在我的jsp页面中选择填充AND和INTER我想要的,但在提交表单时抛出异常,无法将字符串AND映射到枚举类型状态。

我的控制器:

model.addAttribute("list",MyEnum.values);

**

  

但是当我修改我的枚举并添加一个更多的值时它会起作用,   或(“ÖR”),现在如果我从UI中选择OR,它将被正确保存在   database.But它不适用于A或I.

**

注意:对这个问题进行投票只是意味着你没有仔细阅读问题。我已经在stackoverflow上搜索了。 :)

2 个答案:

答案 0 :(得分:5)

感谢大家回答,但我找到了方法,如何解决这个问题。

<form:options items="${mList}" itemLabel="name" />

以下列方式使用spring form选项不指定itemValue字段,spring将为您执行此操作。 :)

答案 1 :(得分:2)

我认为当spring将您的枚举转换为选择选项时,它会在枚举上使用toString方法,并且您覆盖了它,因此它为A返回“AND”,为I返回“INTER”。当它将所选选项转换回枚举时,它可能使用valueOf,但我不确定 在任何情况下,您都应该尝试为此字段实现自己的格式化程序,将enum转换为String并正确地返回枚举。查看此文章:http://bthurley.wordpress.com/2012/10/25/enum-translations-in-spring-mvc/