バリデーションとフォームヘルパー (5/5)
作成:2013-11-16 10:31
更新:2013-11-16 10:31
更新:2013-11-16 10:31
■フォームヘルパーのカスタムタグ
モデルとフォームを連携して扱う場合、フォームヘルパーによるフォームの生成は不可欠です。先ほどのサンプルでは入力フィールドだけを使いましたが、その他にもひと通りのコントロール用タグが用意されています。ここでまとめておきましょう。
◎テキスト入力フィールド
◎パスワード入力フィールド
◎非表示フィールド
◎テキストエリア
◎チェックボックス
◎ラジオボタン
◎選択リスト
基本的にはHTMLのタグをそのまま<g:○○>という形に直しただけですが、いくつか注意点があります。まずテキストエリアでは、表示するテキストはvalueで設定します。終了タグとの間にテキストをはさむ<textarea>のやり方とは異なります。
が、別々に設定をしたい場合、fromにオブジェクトの配列を用意し、そのオブジェクト内からラベルに表示するフィールドと値のフィールドを指定することもできます。この場合には以下のような書き方をします。
下のリスト欄に簡単な利用例を挙げておきます。コントローラー側で表示のためのリストを用意しておけば、選択リストの表示内容をダイナミックに管理できますね!
◎テキスト入力フィールド
<g:textField name="名前" />
◎パスワード入力フィールド
<g:passwordField name="名前" />
◎非表示フィールド
<g:hiddenField name="名前" value="値" />
◎テキストエリア
<g:textArea name="名前" value="値" rows="行数" cols="文字数"/>
◎チェックボックス
<g:checkBox name="名前" value="値" checked="真偽値" />
◎ラジオボタン
<g:radio name="名前" value="値" checked="真偽値"/>
◎選択リスト
<g:select name="名前" from="リスト" value="値" multiple="真偽値"/>
基本的にはHTMLのタグをそのまま<g:○○>という形に直しただけですが、いくつか注意点があります。まずテキストエリアでは、表示するテキストはvalueで設定します。終了タグとの間にテキストをはさむ<textarea>のやり方とは異なります。
■beanを使った選択リスト
一番わかりにくいのは、選択リストを生成する<g:select>でしょう。これはfromにリストを渡すことで、そのリストを<option>として表示する<select>タグを生成します。単純に、表示するラベルと値が同じでいいならば、fromにテキストのリストを用意すればいいでしょう。が、別々に設定をしたい場合、fromにオブジェクトの配列を用意し、そのオブジェクト内からラベルに表示するフィールドと値のフィールドを指定することもできます。この場合には以下のような書き方をします。
<g:select name="名前" from="リスト"これで、fromに指定したリストから順にオブジェクトを取り出し、その中のoptionKeyとoptionValueで指定したフィールドの値を元に<option>タグを生成します。
optionKey="フィールド名" optionValue="フィールド名" />
下のリスト欄に簡単な利用例を挙げておきます。コントローラー側で表示のためのリストを用意しておけば、選択リストの表示内容をダイナミックに管理できますね!
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※値を保管するためのクラス class SelData { public String key; public String val; } ※選択リスト用のデータ def seldata = [ new SelData(key:"A", val:"aaa"), new SelData(key:"B", val:"bbb"), new SelData(key:"C", val:"ccc") ]; ※表示用タグ <g:select name="testsel" from="${selList}" optionKey="key" optionValue="val" size="5" />
※関連コンテンツ