テキストフィールド
GSP
<g:textField name="mytext" value="default text" size="10" maxlength="5"/>
- 出力されるHTML
html
<input type="text" name="mytext" value="default text" size="10" maxlength="5" id="mytext" />
テキストエリア
GSP
<g:textArea name="ta">aiueo</g:textArea>
- 出力されるHTML
html
<textarea name="ta" id="ta" >aiueo</textarea>
ラジオボタン
GSP
<g:radio name="group1" value="1" />
<g:radio name="group1" value="2" checked="true"/>
- 出力されるHTML
html
<input type="radio" name="group1" value="1" id="group1" />
<input type="radio" name="group1" checked="checked" value="2" id="group1" />
チェックボックス
GSP
<g:checkBox name="checkbox1" value="AAA" checked="false"/>
<g:checkBox name="checkbox1" value="BBB" checked="true" />
- 出力されるHTML
html
<input type="hidden" name="_checkbox1" /><input type="checkbox" name="checkbox1" value="AAA" id="checkbox1" />
<input type="hidden" name="_checkbox1" /><input type="checkbox" name="checkbox1" checked="checked" value="BBB" id="checkbox1" />
コントローラ内で値を取得する方法
他のフォームコントロールと違って、チェックボックスの場合は同名の値が渡ってくるので、取得がちょっと他と違う。
単純にparams.checkbox1
としても値は取れるけど、そうすると以下のように型が変化する。
1.一つも選択されていなければnull
2.一つだけ選択されていればString
3.二つ以上選択されていればList
これでも別に処理は出来るけど、params.list('checkbox1')
を使うと、どのような状態でもListに出来るのでもっとスマート。
Controller
class TestController {
def test(){
def checked = params.list("checkbox1")
msg = checked ? checked.join(",") : "not check"
render msg
}
}
セレクトボックス
GSP
<%
// テスト用Mapデータ
def test = [
[mapId:1, mapValue:"value1" ],
[mapId:2, mapValue:"value2" ],
[mapId:99, mapValue:"value99" ]
]
%>
<g:select name="selectedMapId" from="${test}" optionKey="mapId" optionValue="mapValue" />
- 出力されるHTML
html
<select name="selectedMapId" id="selectedMapId" >
<option value="1" >value1</option>
<option value="2" >value2</option>
<option value="99" >value99</option>
</select>
デフォルトで選択される項目の指定
optonValueで表示される値の内、デフォルトで選択したい(selectedを付与したい)値を、value
属性に指定する。
GSP
<g:select name="selectedMapId" from="${test}" optionKey="mapId" optionValue="mapValue" value="99"/>
- 出力されるHTML
html
<select name="selectedMapId" id="selectedMapId" >
<option value="1" >value1</option>
<option value="2" >value2</option>
<option value="99" selected="selected" >value99</option>
</select>
リスト形式で表示したい場合はsize
属性を追加する。
GSP
<g:select name="selectedMapId" from="${test}" optionKey="mapId" optionValue="mapValue" size="2"/>
- 出力されるHTML
html
<select name="selectedMapId" size="2" id="selectedMapId" >
<option value="1" >value1</option>
<option value="2" >value2</option>
<option value="99" >value99</option>
</select>
複数選択を可能にしたい場合はmultiple
属性を追加する
GSP
<g:select name="selectedMapId" from="${test}" optionKey="mapId" optionValue="mapValue" multiple="true"/>
- 出力されるHTML
html
<select name="selectedMapId" multiple="true" id="selectedMapId" >
<option value="1" >value1</option>
<option value="2" >value2</option>
<option value="99" >value99</option>
</select>
初期メッセージを追加したい場合
GSP
<g:select name="selectedMapId" from="${test}" optionKey="mapId" optionValue="mapValue"
noSelection="['null': 'please select!']"
/>
- 出力されるHTML
html
<select name="selectedMapId" id="selectedMapId" >
<option value="null">please select!</option>
<option value="1" >value1</option>
<option value="2" >value2</option>
<option value="99" >value99</option>
</select>
おまけ(ループ)
GSP
<%def source = ["A", "B", "C"]%>
<g:each in="${source}" var="moji" status="index">
${moji}(${index})<br />
</g:each>
- 出力されるHTML
html
A(0)<br />
B(1)<br />
C(2)<br />