[Seasar-user:11716] Re: [Teeda] 静的なラジオボタンの必須入力が効かない

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 11月 20日 (火) 03:00:06 JST


小林 (koichik) です.

Date:    Mon, 19 Nov 2007 16:08:13 +0900
From:    Maehara Yuuta <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11700] [Teeda] 静的なラジオボタンの必須入力が効かない

> // --- Page ---
> @Required
> public void setAaa(final Integer aaa) {
>     this.aaa = aaa;
> }
> 
> デバッグで確認するとsetterが呼び出されず、
> プロパティにはnullがセットされていました。

現状の Teeda では,リクエストパラメータが飛んで
こないとバリデーションは行われないようになってます.
ラジオボタンの場合,全て未選択だとリクエスト
パラメータが飛んでこないため,@Required を
付けても効果がありません.
テキストフィールドのように,未入力でも
リクエストパラメータが飛んでくる項目でないと
意味がないことになりますね.

> そもそもラジオボタンはinitializeで初期値を設定することが前提なのでしょうか?

そうですね.
initialize() でなくても

private Integer aaa = 1;

でも構いませんが,何らかの値を持たせて画面を
表示した時点でいずれかの項目が選択されているように
するのが確実です.


ちょっと反則気味 (?) なやり方としては,

<input type="hidden" name="layoutChildBody:inputRadioForm:aaa" value="" />

のような <input type="hidden"> を持たせると,
ラジオボタンが全て未選択でもリクエストパラメータが
飛んでくるようになるので,@Required バリデータが
働くようになります.
# ラジオボタンの <span> より後ろに記述する必要があります.

弊害がなければ Teeda の方で上記の hidden を
出力するようにしてもいいかも.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>




Seasar-user メーリングリストの案内