欢迎进入Wiki » FAQ » 标签 g:formField、p:filed 中,有没有简单的方式来设置基于i18n的value属性?

 标签 g:formField、p:filed 中,有没有简单的方式来设置基于i18n的value属性?

在2014-06-11 18:32上被李小翔修改
评论 (0) · 附件 (0) · 记录 · 信息

比如下面的例子:

<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>
在2014-06-11 16:37上被李小翔创建

Copyright © 2013 北京博瑞开源软件有限公司
京ICP备12048974号