2012-06-20 128 views
11

实施例:使用以g枚举值:选择当枚举是选择对象的属性

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

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

等等

我想在select,IOW中显示批量标签的值,select应该包含

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

JAN1 
JAN2 
FEB1 
FEB2 
FEB3 ... 

我试图在G几件事情:选择要做到这一点,但没有成功。我认为可能“它”将作为g:select的一部分(因为它显然是一个迭代),并尝试引用option.batchTag.name作为optionValue,但这不起作用。有什么建议么?

谢谢!

回答

20
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

谢谢!第二个建议是我所寻求的。 – Alexx

+0

完美!谢谢 –

+0

第一个标签解决方案可以简化为''。 然后你不需要BatchRange toString-或getKey-方法。 – Wonko

0

一个更好的办法是在这种情况下,使用国际化的消息。有两种选择:

  1. 将valueMessagePrefix添加到select中。
  2. 使枚举实现org.springframework.context.MessageSourceResolvablethis blog post中所述。

有关更多信息,请参阅this question