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

Shinpei Ohtani [E-MAIL ADDRESS DELETED]
2006年 5月 17日 (水) 13:28:07 JST


shotです。
返事おそくてすいません。

06/05/17 に O.Goto<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 後藤です。
>
> On Tue, 16 May 2006 23:06:41 +0900
> "Shinpei Ohtani" <[E-MAIL ADDRESS DELETED]> wrote:
> > shotです。
> >
> > 06/05/16 に O.Goto<[E-MAIL ADDRESS DELETED]> さんは書きました:
> > > 後藤です。
> > >
> > > バリデータについていくつか質問があります。
> > > 1.valueが未入力、または未選択(valueがnull)の場合にvalidateが呼ばれないのは仕様でしょうか。
> > >
> > > exampleのvalidator.htmlの「to」に何も入力しないとS2GreaterEqualValidator#validateが呼ばれません。
> > > <input>タグを<select>タグ(select-one、multipleいずれも)に変えても同じでした。
> >
> > はい、よばれないです。
> >
> これはJSFの仕様ですか?それともS2JSFの仕様ですか?
> 後者であれば「m:required="true"」みたいな感じでvalueがnullでもvalidateが呼ばれるようにはできないでしょうか。

ざっと見た感じだとJSFの仕様と言えると思います。
明示的に書かれた部分はまだ見当たりませんが、他JSF実装でも同様です。


で、Validatorが呼ばれない問題ですが、S2JSFのSelectProcessorで
public void addChild(TagProcessor child) {
  if(child instanceof TextProcessor
      || getProperty(JsfConstants.ITEMS_ATTR != null)) {
      return;
  }
  super.addChild(child);
}

のように記述されています。
<select>以下にあるTagProcessorクラスは
<select>にitems属性がある場合、子のProcessorを
足せないようになっています。

単純修正で上記のif文を直すと他に影響が出てしまったので
もう少し考えさせてください。


> もう1点追加で質問があります。
> <textarea>にバリデータを適用できないのでしょうか。
> exampleのvalidator.htmlの「userName」を
>
> <textarea id="userName"
> m:label = "User Name"
> m:value="#{validatorDto.userName}" m:required="true">
>   <span m:inject="s:validator" m:binding="#{userNameLengthValidator}"/>
> </textarea>
>
> としたところ、「m:required="true"」は効いていますが、S2LengthValidator#validateは呼ばれません。
>
> どのようにすれば<textarea>にバリデータを適用できるのでしょうか。

こちらも調べてみます。なんとなくこちらも同様の問題な気がする。。。。


以上です。
すいませんが宜しくお願いします。



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