[Seasar-user:3642] Re: S2JSF validatorについて

Shinpei Ohtani [E-MAIL ADDRESS DELETED]
2006年 5月 18日 (木) 01:56:25 JST


shotです。

> > ざっと見た感じだとJSFの仕様と言えると思います。
> > 明示的に書かれた部分はまだ見当たりませんが、他JSF実装でも同様です。
> >
> 確認しましたが、確かにMyfacesもS2JSFもどちらもvalueがnullもしくはlength=0だと呼ばないような実装になっていますね。
> でもMyfacesやS2JSFのValidator実装は必ずvalueのnullチェックをしているので、emptyなら
> Validator#validate()のvalue部の引数にnullをセットして呼んでしまっても問題ないように思えるのですけど・・・。

たしかに。
ただ、その場合って標準のValidatorの実際のvalidationは全て
実行されない結果になっていまいますね。

> 最悪そのような解決方法も今回に限ってはありかなと思っていますがどう思われますか?

んー、HtmlSelectManyListboxの仕様上記載されている部分が見つからないですが
他のJSF実装とあまりに挙動が変わってしまうのは避けたいという気持ちはあります。


> 明確にJSFの仕様として定義されていれば仕方がないですが、そうでないのであれば
> 「m:required="true"」のようなオプションで構わないので、公式に
> valueがnullもしくはlength=0でもValidator#validate()をcallするというサポートをして欲しいです。

検討してみます。

> <select><textarea>のバリデータのほうはよろしくお願いします。

すいません、selectの件は、私の勘違いでした。

public void addChild(TagProcessor child) {
 if(child instanceof TextProcessor
     || getProperty(JsfConstants.ITEMS_ATTR != null)) {
     return;
 }
 super.addChild(child);
}

のif文を修正して、

 if(child instanceof TextProcessor
     || ((!(child instanceof ValidatorProcessor)) &&
getProperty(JsfConstants.ITEMS_ATTR != null))) {


のようにするとValidatorを追加することは可能になります。
ただしValidatorの方ではvalueが配列でくる場合の考慮や
primitive型へのconvertなどが必要です。


<textarea>の問題も似たような問題のようで
デフォルトのテキストの一部として解釈されて
無視されてしまうようです。


いったん、ここまでお伝えしておきます。



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