[Seasar-user:15056] Re: [Teeda]チェックボックスの状態について
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2008年 7月 16日 (水) 17:00:16 JST
小林 (koichik) です.
Date: Wed, 16 Jul 2008 09:42:47 +0800 (CST)
From: gaofei714 <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:15042] [Teeda]チェックボックスの状態について
> もし、userNameテキストフィールドに値を入力しない場合にはサブミットすると、
>
> “値を入力してください”というようなエラーが出てきました。
>
> 同時にprintingCancelFlgプロパティの値はなんとfalseになってしまいました。
1.disabled="disabled" の項目はリクエストパラメータに
含まれません (HTML の仕様).
そのため,サーバ側からはチェックされていないように
見えます.
2.バリデーションでエラーになった場合,リクエスト
パラメータはページクラスのプロパティに反映されません.
http://teeda.seasar.org/ja/extension/concept/lifecycle.html#JSFライフサイクルとの関係
・setXxx は UPDATE_MODEL_VALUES フェーズで行われる.
・UPDATE_MODEL_VALUES フェーズが実行されるのは
ポストバックでバリデーションエラーが無かった場合のみ.
よって,printingCancelFlg は new SamplePage() の
直後の値 (false) になります.
バリデーションが成功しても,前述 1.の理由により,
disabled="disabled" なら printingCancelFlg は
false が設定されます.
回避するには,<input type="hidden"> を使って
以下のようにしてください.
<input type="checkbox" id="printingCancelFlg" disabled="disabled" />
<input type="hidden" id="printingCancelFlgHidden" />
public boolean printingCancelFlg;
@PageScope
public boolean printingCancelFlgDisabled;
public boolean getPrintingCancelFlgHidden() {
return printingCancelFlg;
}
public void setPrintingCancelFlgHidden(boolean b) {
if (printingCancelFlgDisabled) {
printingCancelFlg = b;
}
}
--
<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 メーリングリストの案内