拡張ValidatorとValidatorTag
Teeda 1.0 beta5 では拡張Validatorとして、extensionに
Tで始まるValidatorがそろっています。
(TLengthValidator、TRequiredValidatorなど。え?Delphiくさい?まあまあ^_^)
このValidatorを使うと、Validationをかけるターゲットを
for属性で指定できます。下記のようにbutton1ではValidationしたいけど、
button2ではValidationしたくないなどの場合に有効です。
また、JSFの通常のValidatorタグはf:paramが子に
記述することができないのですが、Teedaの拡張タグでは
Validatorを子タグに記述することができます。これでずいぶん記述も楽になるはずです。
<f:view> <h:form> <h:outputText value="name(4 letters or more)" /> <h:inputText id="name1" value="#{validatorBean.name}"> <te:validator validatorId="lengthValidator2"> <f:param name="minimum" value="4" /> <f:param name="for" value="button1" /> <f:param name="minimumMessageId" value="hoge.error1" /> </te:validator> </h:inputText> <h:commandButton id="button1" value="validation button"/> <h:commandButton id="button2" value="no validation"/> <h:message for="name1"/> </h:form> </f:view>
拡張タグを使用しない場合はいつもどおりdiconに記載すればよいです。
またはValidatorをまとめて自動登録する場合は、
例えば以下のようにしてもらえば、かんたん・らくちんですね^^
<component class="org.seasar.framework.container.autoregister.JarComponentAutoRegister"> <property name="instanceDef">@org.seasar.framework.container.deployer.InstanceDefFactory@PROTOTYPE</property> <property name="jarFileNames">"teeda-extension.*"</property> <initMethod name="addClassPattern"> <arg>"org.seasar.teeda.extension.validator"</arg> <arg>"..*Validator"</arg> </initMethod> </component>
これからHTMLレイアウト機能に入りますが、このValidatorのアクション指定を
HTMLでどうやって組み込むかを考え中です・・・・
アノテーションにもっていきたくないんですよねえ。
画面情報がPageクラスの方に入るのも変ですし・・・・・
ついでにConverterもf:paramを使えるようにしておきました。
<h:outputText value="#{converterBean.date1}"> <te:converter converterId="javax.faces.DateTime"> <f:param name="pattern" value="yyyy-MM-dd"/> </te:converter> </h:outputText>
あとは拡張コンポーネント系の説明なんですけど、
それはまとめてbeta6で説明したいと思います。
んじゃあ、次のリリースへGO!