[Seasar-user:11261] Re: [Teeda] 相関バリデータについて

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 10月 24日 (水) 16:00:16 JST


小林 (koichik) です.

Date:    Wed, 24 Oct 2007 13:21:57 +0900
From:    木村 究道 <[E-MAIL ADDRESS DELETED]>
To:       [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11245] Re: [Teeda] 相関バリデータについて

> 先ほど調査していて気になったのですが、
>   <input id="from"/>&nbsp;〜&nbsp;<input id="to"/>
> 
>   @LessEqual(targetId="to")
>   private String from;
>   private String to;
> 
> の状態で、Eclipseのデバッグモードで
> TLessEqualValidatorクラスの
> 
>     if (targetValue == null) {
>          return;
>     }
> 
> のifで止めて、「targetValue」の値がnullとなってい
> て、ここでreturnしていました。
> 
> これは、from側でチェックしないようにどこかで
> 「targetValue」にnullを入れているということでしょ
> うか?

null を入れているわけではなく,「まだ」null の
ままということです.

> それと、素人考えで申し訳ないのですが、先に出力され
> るコンポーネント(今回の場合はid="from"の方)で、チェ
> ックできてもよさそうな気がするのですが、このような
> 仕様になっているのは何故なのでしょうか?

「先に出力される」のは描画時の話で,バリデーションの
場合は「先に入力される」と考えてください.
先に入力されたコンポーネントの Converter/Validator が
呼び出された時点では,それより後に入力される
コンポーネントは「まだ」Converter/Validator が
呼び出されておらず,値が確定していません.
ですから,相関チェックは後で呼び出される
コンポーネントの Converter/Validator でしか
行えません.
最初の質問もこれで納得していただけるかと.


--
<signature>
   <name>Koichi Kobayashi</name>
   <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




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