【问题标题】:grails I18N message properties file with US states美国各州的 grails I18N 消息属性文件
【发布时间】:2013-09-24 22:35:52
【问题描述】:

我将如何设置美国所有州的 I18N 消息属性文件。我希望能够将这些添加到我的 gsp 文件中的 g:select 标记中。 我在网上看到不同的方法来做到这一点。对 grails 不熟悉也无济于事。任何帮助表示赞赏。

例子:

<select> 
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
.......
</select> 

【问题讨论】:

  • 这很容易
  • 好的,因为我觉得这并不容易。也许有人可以给我一个线索?
  • 在这个阶段,我什至不在乎它是否在 I18N 文件中。只是想知道如何使用 g:select 来生成状态。

标签: grails


【解决方案1】:

我看到了几种方法来做到这一点......

在 Config.groovy 中:

com.app.states=[[abbr: 'AL', name: 'Alabama'],[abbr: 'AK', name: 'Alaska']..........]

然后在你的 gsp 中:

<g:select name="state" from="${grailsApplication.config.com.app.states}" optionKey="abbr" optionValue="name" noSelection="${['null':'Select One...']}" value="${obj.state}"/>

另一种方式

为您的缩写创建一个枚举:

package com.app.enum
public enum State {
    AL, AK, .........., WY
}

在messages.properties中添加消息:

com.app.enum.AL=Alabama
com.app.enum.AK=Alaska
...
...
...

然后在您的 GSP 中:

<g:select name="state" from="${com.app.enum.State.values()}" optionKey="key" valueMessagePrefix="com.app.enum" noSelection="${['null':'Select One...']}" value="${obj.state.key}"/>

我更喜欢第二种方式。我还将模型上的 state 字段键入为 State 枚举类型,而不仅仅是一个字符串。但是其中任何一个都应该适合您...

【讨论】:

  • 抱歉,请重新阅读您的问题。第一个并没有真正解决 i18n 问题。您可能可以将'valueMessagePrefix' 添加到 g:select 那里,并做类似的事情。您只想从标签中删除“optionValue”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 2011-08-09
  • 1970-01-01
  • 2016-11-07
  • 2020-07-31
  • 2013-12-24
  • 1970-01-01
相关资源
最近更新 更多