标签 g:formField、p:filed 中，有没有简单的方式来设置基于i18n的value属性?
李小翔
2014-06-11 18:32

内容列表

比如下面的例子：
<g:formField bean=”${ bean} ” name=”foobar” value=”${ message(code:’x.y.foobar.’ + bean.foobar} ”>
   <g:select name=”foobar” value=”...” from=”...” valueMessagePrefix=”x.y.foobar” />
</g:formField>
属性 foobar 的显示值是基于 i18n 的，如：
x.y.foobar.1 = AAA
x.y.foobar.2 = BBB
即 foobar 的值1时，显示AAA；值为2时，显示BBB。
示例中配置 g:formField 标签 value 属性的方法显然不够简洁，写起来麻烦而且对性能也有一定影响。其实标签 g:formField 和 p:field 还有两个属性 valueI18n 和 valueI18nPrefix：
valueI18n：如果为true，则将按照bean的类名+属性名+属性值转换为i18n后，自动设置value值。
即，如果 bean 的类名为 x.y.Zz，foobar的值为1，则转换为”x.y.Zz.foobar.1”后显示其i18n中定义的值。
valueI18nPrefix：类似 g:select 标签中的 valueMessagePrefix，如果valueI18n无法满足要求，则可以设置本属性来转换
上面的例子简化后：
<g:formField bean=”${ bean} ” name=”foobar” valueI18n=”true”>
   ......
</g:formField>
或：
<g:formField bean=”${ bean} ” name=”foobar” valueMessagePrefix=”x.y.foobar”>
   ......
</g:formField>