2

在我看来,我不想在表单中使用普通<g:textField>字段,而是想使用 Grails 的<g:countrySelect>小部件。

我的问题

<g:countrySelect name="country" value="${myObjInstance?.country}"/>

...产生...

<select name="country" id="country">
   <option value="afg">Afghanistan</option>
   <option value="alb">Albania</option>
   ...
</select>

这意味着,当提交表单时,它会将值指定为国家代码(例如“afg”)而不是国家名称(“Afghanistan”)。我更喜欢使用完整的国家名称作为值。如果可能的话,我该如何做到这一点?

4

3 回答 3

1

另一种选择是使用ISO_3166 国家代码s 的枚举来获取完整的描述。例如:

CountryCode.getByCode(params.country).getName()
于 2012-07-27T11:29:56.017 回答
1

我不相信 taglib 原样给你这种能力。您要么需要扩展它,要么使用您自己的 Country 集合 + <g:select />

于 2012-07-27T10:34:45.707 回答
1

要回答我自己的问题...

这些值可以保持原样(国家代码),然后只使用国家代码。在您的视图中,您可以使用 grailscountry()方法来显示国家名称,例如

假设国家代码是“afg”(保存在表中的值)。在您看来(GSP),您可以使用

<div>${country(code: fieldValue(bean: myObjInstance, field: "country"))}</div>

这将打印出来

<div>Afghanistan</div>

代替

<div>${fieldValue(bean: myObjInstance, field: "country")}</div>

...之前使用过:

<div>afg</div>
于 2012-07-27T12:17:26.950 回答