используя значения enum в г:выберите при enum-это атрибут выбора объекта

пример:

batchTag-это атрибут перечисляемого типа batchRange со значениями типа:

JAN1 "January Biweekly 1",
JAN2 "January Biweekly 2",

etc.

Я хочу отобразить значение batchTag в select, IOW, select должен содержать

"January Biweekly 1"
"January Biweekly 2" ...

не

JAN1
JAN2
FEB1
FEB2
FEB3 ...

Я пробовал несколько вещей в g: выберите, чтобы сделать это, но без успеха. Я думал, что, возможно, "это" будет доступно как часть g: select (как это ясно итерация) и попытался ссылаться на нее.batchTag.имя для optionValue, но это не сработало. Есть предложения?

спасибо!

2 ответов


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()}" />

лучшим подходом было бы использовать сообщения i18n в этом случае. Есть два варианта:

  1. добавить valueMessagePrefix в select.
  2. сделайте перечисление реализовать org.springframework.context.MessageSourceResolvable как описано в этот блог.

посмотреть этот вопрос для получения дополнительной информации.