拡張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!