Как связать ENUM с радиокнопкой? - PullRequest
8 голосов
/ 13 августа 2010

Тип является свойством enum в объекте.

jsp:

<form:radiobutton path="type" value="Male" />

java:

public enum TestType
{
    Male, Female;
}

и ошибка

Невозможно преобразовать значение 'Male' из типа 'java.lang.String' в тип 'java.lang.Enum';reason = 'java.lang.Enum не является типом enum'

Ответы [ 3 ]

7 голосов
/ 21 июля 2012

Более простое решение можно найти на весеннем форуме , без необходимости каких-либо пользовательских привязок.

4 голосов
/ 13 августа 2010

сделать следующим образом

public enum TestType {

    MAN("Man"),
    FEMALE("Female");

    private String description;

    private TestType(String description) {
        this.description = description;
    }

    public String getValue() {
        return name();
    }

    public void setValue(String value) {}

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

}

И зарегистрировать пользовательский переплет следующим образом

dataBinder.registerCustomEditor(TestType.class, new PropertyEditorSupport() {
        @Override
        public void setAsText(String value) throws IllegalArgumentException {
            if(StringUtils.isBlank(value))
                return;

            setValue(TestType.valueOf(value));
        }

        @Override
        public String getAsText() {
            if(getValue() == null)
                return "";

            return ((TestType) getValue()).name();
        }
    });

Тогда

<form:radiobuttons path="type" items="${testTypeList}" itemLabel="description"/>

Вы настроили свой TestType следующим образом

 model.addAttribute(TestType.values());
0 голосов
/ 13 августа 2010

Возможно, свойство type объекта команды имеет значение Enum вместо TestType?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...