[Seasar-user:13433] Re: [teeda] Validationエラー時にprerenderが実行されるとき、フォームの値がPageクラスにセットされていない

Mitsutaka Sato [E-MAIL ADDRESS DELETED]
2008年 3月 27日 (木) 12:11:06 JST


小林様、
ご回答ありがとうございました。

やはりバリデーションエラー時はプロパティはセットされないんですね。

どのような場面で問題が出たかというと、SelectBoxの中身をAjaxで変更している画面のときです。
例)
<select id="league" onchange="ajax()">
<option>パ・リーグ</option>
<option>セ・リーグ</option>
</select>

<select id="kyudan">
<option>阪神</option>
<option>巨人</option>
<option>中日</option>
</select>

<input type="text" id="playerName" />

例えばこのように、leagueを選択するとkyudan の選択肢が変更されるような画面で
leagueとkyudanは正しく選択したけど、playerNameがValidationエラーとなってしまったような場合に、kyudan
の値を正しく復元できないのです。
# load時にajaxを実行すれば、kyudanの選択肢は復元できるのですが、値が復元できません。

そこで prerenderでやろうとしたわけですが、プロパティがセットされていなかったので
うまく行かなかったというわけでした。

結構このような使い方はありがちなんじゃないかと思っているんですが、
やはりバリデーションエラー時にPageプロパティをセットするのは仕様上変なんでしょうか。。

ご検討いただければ幸いです。


2008/3/26 Koichi Kobayashi <[E-MAIL ADDRESS DELETED]>:

> 小林 (koichik) です.
>
> Date:    Wed, 26 Mar 2008 21:47:39 +0900
> From:    "Mitsutaka Sato" <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:13427] [teeda]
> Validationエラー時にprerenderが実行されるとき、フォームの値がPageクラスにセットされていない
>
> > @required
> > public String aaa;
> > @required
> > public String bbb;
> > @required
> > public String ccc;
> >
> > このようにページクラスに3つのフィールドがあって、それぞれInputTextになっているとします。
> > このとき、フォームでbbbとcccにのみ値を入力しsubmitすると、aaaのRequiredでValidationエラーとなりますが、
> > このとき呼び出されるprerenderでbbbとcccの値を参照したくても、nullになっています。
>
> バリデーションでエラーになった場合,ページクラスの
> プロパティは更新されません.
>
> > どのような場面で使いたいかというと、
> > 例えばフォームdddの値にしたがって、フォームeeeのSelectBoxの中身を変えたい場合などです。
>
> どういう画面なのかよく分かりませんが,
> 画面全体を入力した場合のボタンを「登録」とすると,
> それとは別に (住所等の) 検索ボタンがあるような
> イメージでしょうか?
>
> もしそうであるなら,@Required アノテーションの
> target 要素で「登録」ボタンの id を指定すれば
> 他のボタンが押された場合は必須チェックが行われなく
> なります.
>
> @required(target="doSubmit")
> public String aaa;
> @required
> public String bbb;
> @required
> public String ccc;
>
> 上記のように指定した場合,aaa は
> doSubmit ボタンが押された場合だけ必須に
> なります.
> bbb や ccc はどのボタンが押された場合も必須です.
>
> target 属性は複数のボタンの id をカンマ区切りで
> 並べることもできます.
>
>
> --
> <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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: http://ml.seasar.org/archives/seasar-user/attachments/20080327/e886ef6f/attachment-0001.html 


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