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

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 3月 26日 (水) 22:30:06 JST


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