【问题标题】:using value of enum in g:select when enum is attribute of selection object当枚举是选择对象的属性时,使用 g:select 中的枚举值
【发布时间】:2012-06-22 23:45:42
【问题描述】:

例子:

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

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

等等

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

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

不是

JAN1
JAN2
FEB1
FEB2
FEB3 ...

我在 g:select 中尝试了几件事来做到这一点,但没有任何成功。我想也许“它”将作为 g:select 的一部分提供(因为它显然是一个迭代)并尝试为 optionValue 引用 it.batchTag.name,但这不起作用。有什么建议吗?

谢谢!

【问题讨论】:

    标签: grails select enums gsp scaffolding


    【解决方案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:select

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

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

    【讨论】:

    • 谢谢!第二个建议是我所寻求的。
    • 第一个标签解决方案可以简化为&lt;g:select from="${BatchRange.values()}" optionValue="value" /&gt;。那么您也不需要 BatchRange toString- 或 getKey- 方法。
    • @Gregg,我收到以下错误:...No signature of method: static BatchRange.values() is applicable for argument types: () values: [] Possible solutions: use([Ljava.lang.Object;), use(java.lang.Class, groovy.lang.Closure), use(java.util.List, groovy.lang.Closure), save(), evaluate(java.io.File), evaluate(java.lang.String) 有什么建议吗?!谢谢。
    • @AlwaysAnovice 你必须在 src/groovy 下创建一个 groovy 枚举类型
    • @AlwaysAnovice:这种语法对我有用:CREEE('Créée'), LANCEE('Lancée'), TERMINEE('Terminée')。见grails.org/wiki/TipsAndTricks#Enum%20usage
    【解决方案2】:

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

    1. 将 valueMessagePrefix 添加到选择中。
    2. 使枚举实现org.springframework.context.MessageSourceResolvable,如this blog post 中所述。

    更多信息请参见this question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 2011-02-16
      • 1970-01-01
      相关资源
      最近更新 更多