3

我有枚举集

public enum MyEnum {

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

我有 spring 表单:在我的 jsp 页面中选择填充 AND 和 INTER 如我所愿,但是在提交表单时它会抛出异常,无法将 String AND 映射到枚举类型 Status。

我的控制器:

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

**

但是当我修改我的枚举并添加一个像 OR("ÖR") 这样的值时它可以工作,现在如果我从 UI 中选择 OR,它会正确保存在数据库中。但它不适用于 A 或 I。

**

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

4

2 回答 2

5

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

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

按以下方式使用弹簧表单选项,不要指定 itemValue 字段,弹簧会为您完成。:)

于 2013-06-06T05:14:23.427 回答
2

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

于 2013-06-05T16:23:30.120 回答