Ответ 1
Я знаю, что это несколько лет, и к настоящему времени нужно решить, но я подумал, что добавлю решение для будущих посетителей.
Просто удалите деталь [itemLabel = "beanProperty" ]. Он будет использовать 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 без необходимости создания получателя?
Я знаю, что это несколько лет, и к настоящему времени нужно решить, но я подумал, что добавлю решение для будущих посетителей.
Просто удалите деталь [itemLabel = "beanProperty" ]. Он будет использовать toString для печати значений.
Почему бы не добавить общедоступный метод getDisplayName() к вашему перечислению?
Пробовали ли вы использовать мощную модель AOP Spring для расширения ваших перечислений с одного места? Казалось бы, в зависимости от того, сколько у вас перечислений вы можете легко добавить метод getDisplayName()
для всех, который просто возвращает их значение toString()
.