Подтвердить что ты не робот

Используйте тег Spring для отображения значения enum toString

Я использую Spring для HTML-формы. Одно из полей - enum, и поэтому мне нужен раскрывающийся список HTML (тег <option>). Мое имя перечисления отличается от значения toString(). Например:

public enum Size {
    SMALL("Small"), LARGE("Large"), VERY_LARGE("Very large");

    private final String displayName;

    private Size(String displayName) {
        this.displayName = displayName;
    }

    public String toString() {
        return displayName;
    }
}

Я хочу, чтобы пользователь увидел значение toString(). Обычно это выполняется с помощью itemLabel тега Spring.

<form:options items="${enumValues}" itemLabel="beanProperty" />

Но toString() не является свойством bean, поскольку он не начинается с "get". Есть ли способ установить itemLabel для использования значения toString без необходимости создания получателя?

4b9b3361

Ответ 1

Я знаю, что это несколько лет, и к настоящему времени нужно решить, но я подумал, что добавлю решение для будущих посетителей.

Просто удалите деталь [itemLabel = "beanProperty" ]. Он будет использовать toString для печати значений.

Ответ 2

Почему бы не добавить общедоступный метод getDisplayName() к вашему перечислению?

Ответ 3

Пробовали ли вы использовать мощную модель AOP Spring для расширения ваших перечислений с одного места? Казалось бы, в зависимости от того, сколько у вас перечислений вы можете легко добавить метод getDisplayName() для всех, который просто возвращает их значение toString().