2

私の見解では、フォームで通常のフィールドを使用する代わりに、Grails のウィジェット<g:textField>を利用したいと考えています。<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」など) として割り当てられることを意味します。完全な国名を値として使用することを好みます。可能であれば、どうすればこれを達成できますか?

4

3 に答える 3

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 に答える
1

taglib がそのままではその能力が得られるとは思えません。それを拡張するか、独自の Country コレクション + <g:select /> を使用する必要があります

于 2012-07-27T10:34:45.707 に答える
1

Another option would be to use this enum of the ISO_3166 country codes to get the full length description. Eg:

CountryCode.getByCode(params.country).getName()
于 2012-07-27T11:29:56.017 に答える