[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 メーリングリストの案内