g:countrySelect,以完整的国家/地区名称作为值

时间:2010-05-26 12:07:18

标签: grails groovy

我想使用g:countrySelect存储确切的国家/地区名称。示例德国而不是DEU。它是下拉菜单中的值。下拉文本是德国,但当它将其保存到数据库时,它会更改回国家/地区代码。对不起,如果我有点天真,但我已经搜索了将近3个小时的解决方案,并且在grails网站上没有详细记录。我可以选择任何替代甚至ajax。只是为了有一个简单的方法来显示国家列表,并将能够存储国家的真实姓名而不是国家代码。谢谢!

3 个答案:

答案 0 :(得分:5)

您可以使用此功能将ISO3国家/地区代码转换为国家/地区名称

def getCountryName(String countryCode) {
  Locale.availableLocales.find{it.ISO3Country == countryCode}.displayCountry
}

// Test
println getCountryName('DEU')  // prints 'Germany'

如果您想在GSP中执行此操作,最好将其作为TagLib提供。

答案 1 :(得分:0)

不确定上述解决方案何时停止工作,但如果您现在尝试,则会收到错误消息:

Couldn't find 3-letter country code for CS

使用最新的圣杯版本,获取完整国家/地区名称的当前方式是使用此标记:

<g:country code="${country}"/>

答案 2 :(得分:0)

我知道这个帖子很旧,但我一直在寻找同样的问题,我不得不分享我的解决方案。

您可以使用 CountryTagLib 对象将 ISO3 代码转换回完整的国家/地区名称,如下所示:

def country = CountryTagLib.ISO3166_3[code]

“code”属性是您从 获得的 ISO3 代码。