textareaのバリデータ
しつこくも、またまたハマり中です。
textareaで入力文字数の最大長をチェックしようとしていますが、画面にメッセージが表示できません。
手順としては、
- ”length200Validator”という200文字以上を制限するValidatorを定義します。
■xxx.dicon <component name="length200Validator" class="org.seasar.jsf.validator.S2LengthValidator"> <property name="maximum">200</property> </component>
- textareaにこのValidatorと”メッセージ表示タグ”を設定します。
■test.html <textarea id="mycontent" m:label="文章" m:validator="#{length200Validator.validate}" m:escape="false" m:rows="20" m:cols="50" wrap="soft" m:value="#{hogeDto.mycontent}" > あいうえお</textarea> <span m:inject="h:message" m:for="mycontent" m:class="error"/>
これで、200文字以上を入力した場合、”メッセージ表示タグ”にエラーメッセージが反映されません。
コンソール上では以下のようにメッセージが出ています。
javax.faces.validator.ValidatorException: バリデーションエラー: "文章": 入力値が長過ぎます. 200文字以下にしてください. at org.seasar.jsf.validator.S2LengthValidator.validate(S2LengthValidator.java:61) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.seasar.framework.hotswap.HotswapProxy.invoke(HotswapProxy.java:95) at $Proxy35.validate(Unknown Source)
m:required を設定した場合は入力画面上にエラーメッセージがでていたのですが...