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