Используйте тег параметров Spring для отображения значения toString в перечислении - PullRequest
11 голосов
/ 13 февраля 2009

Я использую 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() не является свойством бина, так как оно не начинается с "get". Есть ли способ установить itemLabel для использования значения toString без необходимости создания геттера?

Ответы [ 3 ]

6 голосов
/ 14 мая 2012

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

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

2 голосов
/ 13 февраля 2009

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

1 голос
/ 04 августа 2011

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

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