Используя значение enum в g: выберите, когда enum является атрибутом объекта выбора
Пример:
batchTag - это атрибут с перечислением типа batchRange со значениями:
JAN1 "January Biweekly 1",
JAN2 "January Biweekly 2",
и др.
Я хочу отобразить значение VALUE для пакета BatchTag в select, IOW, select должен содержать
"January Biweekly 1"
"January Biweekly 2" ...
не
JAN1
JAN2
FEB1
FEB2
FEB3 ...
Я попытался несколько вещей в g: выберите, чтобы сделать это, но без каких-либо успехов. Я подумал, что, возможно, "это" будет доступно как часть g: select (так как это явно итерация) и попытался ссылаться на it.batchTag.name для опцииValue, но это не сработало. Любые предложения?
Спасибо!
Ответы
Ответ 1
enum BatchRange {
JAN1 "January Biweekly 1",
JAN2 "January Biweekly 2",
final String value
BatchRange(String value) { this.value = value }
String toString() { value }
String getKey() { name() }
}
Обратите внимание на метод getKey(). И затем ваш g: выберите
<g:select name="batch" from="${BatchRange.values()}" optionKey="key" />
или
<g:select name="batch" from="${BatchRange.values()}" keys="${BatchRange.values()*.name()}" />
Ответ 2
Лучшим подходом было бы использовать сообщения i18n в этом случае. Существует два варианта:
- Добавить значениеMessagePrefix в select.
- Сделайте enum реализовать
org.springframework.context.MessageSourceResolvable
, как описано в этот пост в блоге.
Подробнее см. этот вопрос.