libro
www.tuyano.com
初心者のためのGroovy/Grails入門

バリデーションとフォームヘルパー (5/5)

作成:2013-11-16 10:31
更新:2013-11-16 10:31

■フォームヘルパーのカスタムタグ

モデルとフォームを連携して扱う場合、フォームヘルパーによるフォームの生成は不可欠です。先ほどのサンプルでは入力フィールドだけを使いましたが、その他にもひと通りのコントロール用タグが用意されています。ここでまとめておきましょう。


◎テキスト入力フィールド
<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="リスト"
      optionKey="フィールド名" optionValue="フィールド名" />
これで、fromに指定したリストから順にオブジェクトを取り出し、その中のoptionKeyoptionValueで指定したフィールドの値を元に<option>タグを生成します。

下のリスト欄に簡単な利用例を挙げておきます。コントローラー側で表示のためのリストを用意しておけば、選択リストの表示内容をダイナミックに管理できますね!

※プログラムリストが表示されない場合

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" />
※関連コンテンツ

「初心者のためのGroovy/Grails入門」に戻る