2013-06-05 2 views
3

У меня есть перечисление установитьКартирование перечисления в весенней форме выбрать иначе

public enum MyEnum { 

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

У меня есть форма пружины: выбрать в моей странице JSP, которая заполняет И и INTER Как я хочу, но при подаче форма, в которой он выдает исключение, не может сопоставить String AND и enum type Status.

Мой контроллер:

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

**

Но это работает, когда я изменить мое перечисление и добавить еще одно значение, как, OR ("ИЛИ"), теперь если я выбираю ИЛИ из пользовательского интерфейса, оно сохраняется должным образом в database.But он не будет работать для A или I.

**

Примечание: Вниз голосование по этому вопросу просто означает, что вы не прочитали вопрос тщательно. Я уже искал в stackoverflow. :)

+0

@PaulVargas: позвольте мне подтвердить то же самое – Chetan

+0

какое это исключение? – msangel

+0

@msangel: Невозможно сопоставить AND с MyEnum, но он работает, когда я изменяю свое перечисление и добавляю еще одно значение, например OR («ÖR»). Теперь, если я выбираю OR из UI, он автоматически сохраняется в базе данных. Но это не сработает для A или I. – Chetan

ответ

5

спасибо всем за ответ, но я нашел способ, как с этим справиться.

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

Варианты использования пружины формы следующим способом не указать ItemValue поле, весна будет делать это для вас. :)

+1

свойство 'name' элемента ENUM является приватным, как вы его получили ? org.springframework.beans.NotReadablePropertyException: Недопустимое свойство 'name' класса bean [xxx.users.Role]: имя свойства Bean не читается или имеет недопустимый метод getter: соответствует ли тип возвращаемого значения getter тип параметра установщика? ' – xedo

2

Я полагаю, что когда весна преобразует ваше перечисление для выбора опции, он использует метод toString для перечисления, и вы его переопределили, чтобы он возвращал «И» для A и «INTER» для I. Когда он конвертирует выбранный вариант обратно в enum, он, вероятно, использует valueOf, но я не уверен.
В любом случае вы должны попытаться внедрить собственный форматировщик для этого поля, который будет правильно преобразовывать перечисление в строку и обратно в перечисление. Проверьте эту статью: http://bthurley.wordpress.com/2012/10/25/enum-translations-in-spring-mvc/

+0

Этот документ не содержит того, что я хочу :( – Chetan