Как связать ПЕРЕЧИСЛЕНИЕ с переключателем?

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

jsp:

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

Java:

public enum TestType
{
    Male, Female;
}

и получил ошибку

Не мог преобразовать значение 'Штекер' из типа 'java.lang. Строка' для ввода 'java.lang. Перечисление'; рассуждайте = 'java.lang. Перечисление не является перечислимым типом'

8
задан BalusC 13 August 2010 в 15:10
поделиться

2 ответа

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

0
ответ дан 5 December 2019 в 15:17
поделиться

Сделайте следующее

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());
4
ответ дан 5 December 2019 в 15:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: