【发布时间】:2010-05-26 12:07:18
【问题描述】:
我想使用 g:countrySelect 存储确切的国家/地区名称。例如德国而不是 DEU。它是下拉菜单中的值。下拉文本是德国,但当它保存到数据库时,它会变回国家代码。对不起,如果我有点天真,但我一直在寻找近 3 个小时的解决方案,并且在 grails 网站上没有很好的记录。我可以选择任何替代方案,甚至 ajax。只是为了有一种简单的方法来显示国家列表,并且能够存储国家的真实名称而不是国家代码。谢谢!
【问题讨论】:
我想使用 g:countrySelect 存储确切的国家/地区名称。例如德国而不是 DEU。它是下拉菜单中的值。下拉文本是德国,但当它保存到数据库时,它会变回国家代码。对不起,如果我有点天真,但我一直在寻找近 3 个小时的解决方案,并且在 grails 网站上没有很好的记录。我可以选择任何替代方案,甚至 ajax。只是为了有一种简单的方法来显示国家列表,并且能够存储国家的真实名称而不是国家代码。谢谢!
【问题讨论】:
您可以使用此函数将 ISO3 国家代码转换为国家名称
def getCountryName(String countryCode) {
Locale.availableLocales.find{it.ISO3Country == countryCode}.displayCountry
}
// Test
println getCountryName('DEU') // prints 'Germany'
如果您想在 GSP 中执行此操作,最好将其作为 TagLib 提供。
【讨论】:
不确定上述解决方案何时停止工作,但如果您现在尝试,您会收到错误消息:
Couldn't find 3-letter country code for CS
在最新的grail版本中,目前获取完整国家名称的方法是使用这个标签:
<g:country code="${country}"/>
【讨论】:
我知道这个帖子很旧,但我一直在寻找同样的问题,我不得不分享我的解决方案。
您可以使用CountryTagLib 对象将 ISO3 代码转换回完整的国家/地区名称,如下所示:
def country = CountryTagLib.ISO3166_3[code]
“code”属性是您从
【讨论】: