在g中使用枚举值:当枚举是选择对象的属性时选择

时间:2012-06-20 18:58:41

标签: grails select enums gsp scaffolding

示例:

batchTag是batchRange的枚举类型属性,其值如下:

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

我想在select,IOW中显示batchTag的VALUE,select应该包含

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

JAN1
JAN2
FEB1
FEB2
FEB3 ...

我在g中尝试了几件事:选择这样做,但没有任何成功。我想也许“它”可以作为g:select(因为它显然是一个迭代)的一部分可用,并尝试引用option.VatchTag.name作为optionValue,但这不起作用。有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:23)

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

答案 1 :(得分:0)

更好的方法是在这种情况下使用i18n消息。有两种选择:

  1. 将valueMessagePrefix添加到select。
  2. 按照this blog post
  3. 中的说明制作枚举工具org.springframework.context.MessageSourceResolvable

    有关详细信息,请参阅this question