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

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2006年 5月 18日 (木) 23:38:06 JST


米林です

From: "O.Goto" <[E-MAIL ADDRESS DELETED]>
Sent: Thursday, May 18, 2006 7:18 PM

> 後藤です。

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

>> > のようにするとValidatorを追加することは可能になります。
>> > ただしValidatorの方ではvalueが配列でくる場合の考慮や
>> > primitive型へのconvertなどが必要です。
>> >
>> 今日にでも試してみたいと思います。
>>
> <select>の方はこの修正でValidatorが追加できました。ありがとうございます。
>
> valueがnullでもvalidateを呼ぶというのは、とりあえず
> org.seasar.jsf.component.htmlの各クラスを継承して
> public void validate(FacesContext context)
> をオーバーライドして解決しました。
> 公式にサポートがあればそちらに乗り換えようと思います。
>
>> > <textarea>の問題も似たような問題のようで
>> > デフォルトのテキストの一部として解釈されて
>> > 無視されてしまうようです。
>> >
> で、<textarea>も同じように修正してみたのですが、こちらはダメでした。
> HTMLとしてパースしているので、<textarea>の子要素はPCDATAとして処理され、
> TagProcessorHandler#startElement()ではなくTagProcessorHandler#characters()で処理されてしまうのですね。
>
> 私が思いつく解決方法としては、
>
> 1)<textarea>の子要素をPCDATAに加えて<span>も追加した改変DTDでパースする。 
> 
> 2)TagProcessorHandler#characters()でpeekProcessor()の戻りがInputTextareaProcessorの時に
> textがバリデータかどうかチェックしてバリデータならValidatorProcessorを作成してaddChild()する。
>
> 1)についてはCyberNeko HTML Parserについてまだわかっていないので、できるかどうかわかりません。
> CyberNeko HTML Parserを使わなければできると思いますが。
> できるとすれば簡単な解決方法だと思います。

こちらにつきましては、Neko HTML Parserの方で出来ません。

> 2)についてはちょっとスマートじゃないなって思います。

textareaの子タグにせずに、m:validator指定でvalidatorを指定するのでは
いけないのでしょうか?
m:validatorだと問題なく呼べるはずですが、textareaの子タグにしなければならない 

理由が何かあるのでしょうか?
お手数ですが、m:validatorで試して頂けますか?

<textarea m:rows="1" m:cols="10"
    m:label="Age" m:required="true"
    m:value="#{inputTextareaDto.age}"
    m:validator="#{ageValidator.validate}">
1234</textarea>





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