我有枚举设置
public enum MyEnum {
A("AND"), //
I("INTER");
}
我有弹簧形式:在我的jsp页面中选择填充AND和INTER我想要的,但在提交表单时抛出异常,无法将字符串AND映射到枚举类型状态。
我的控制器:
model.addAttribute("list",MyEnum.values);
**
但是当我修改我的枚举并添加一个更多的值时它会起作用, 或(“ÖR”),现在如果我从UI中选择OR,它将被正确保存在 database.But它不适用于A或I.
**
注意:对这个问题进行投票只是意味着你没有仔细阅读问题。我已经在stackoverflow上搜索了。 :)
答案 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/