问题
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:
- Add valueMessagePrefix to the select.
- 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