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