using value of enum in g:select when enum is attribute of selection object

假如想象 提交于 2019-12-06 19:10:13

问题


Example:

batchTag is an enumerated type attribute of a batchRange, with values like so:

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

etc.

I want to display the VALUE of the batchTag in the select, IOW, the select should contain

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

not

JAN1
JAN2
FEB1
FEB2
FEB3 ...

I have tried several things in the g:select to do this, but without any success. I thought perhaps "it" would be available as part of the g:select (as it is clearly an iteration) and tried to reference it.batchTag.name for the optionValue, but that did not work. Any suggestions?

Thank you!


回答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() }
}

Note the getKey() method. And then your g:select

<g:select name="batch" from="${BatchRange.values()}" optionKey="key" />

or

<g:select name="batch" from="${BatchRange.values()}" keys="${BatchRange.values()*.name()}" />



回答2:


A better approach would be to use i18n messages in this case. There are two options:

  1. Add valueMessagePrefix to the select.
  2. Make the enum implement org.springframework.context.MessageSourceResolvable as described in this blog post.

See this question for further information.



来源:https://stackoverflow.com/questions/11126340/using-value-of-enum-in-gselect-when-enum-is-attribute-of-selection-object

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!