1

コンポジションコンポーネントに omnifaces ライブラリの o:validator タグを使用したい:

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core" xmlns:cc="http://java.sun.com/jsf/composite"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui"
xmlns:pe="http://primefaces.org/ui/extensions">
<cc:interface>
    <cc:attribute name="disabled" />
    <cc:attribute name="label" />
    <cc:attribute name="validatorMessage" />
    <cc:attribute name="required" />
    <cc:attribute name="value" required="true" />
    <cc:editableValueHolder name="date" targets="textfield"/>
</cc:interface>
<cc:implementation>
    <p:outputLabel id="label" for="textfield" value="#{cc.attrs.label}" rendered="#{cc.attrs.label!=null}" />
    <p:inputText id="textfield" value="#{cc.attrs.value}" styleClass="dateInputField" required="#{cc.attrs.required}" disabled="#{cc.attrs.disabled}">      
        <f:convertDateTime locale="de_DE" type="date" />
        <!-- some other stuff... -->
    </p:inputText>
    <p:watermark for="textfield" value="TT.MM.JJJJ" />  
    <cc:insertChildren/>
</cc:implementation>

バリデータは次のように呼び出されます。

<o:validator validatorId="customGreaterThanValidator" compareTo="#{bean.date}" validatorMessage="given date must be later than #{bean.date}" for="date"/>

しかし残念なことに、omnifaces のバリデータ タグは "for" 属性を無視しているようです。JSF の元のバリデータ タグでは「for」タグは機能しますが、「compareTo」タグの値が ValueExpression の場合は機能しません。

カスタムタグハンドラを実装しようとしましたが、それもうまくいきませんでした。

4

1 に答える 1

0

これは実際、現在の 1.3 <o:validator>(または<o:converter>) ではサポートされていません。これは、 126 号(スナップショットをダウンロードできる場所)に従って、将来の 1.4 で提供される予定です。

重要なのは、と をそれぞれに変更TagHandlerして、がコンポジットに対してその役割を果たせるようにすることです。ValidatorHandlerConverterHandlerTagHandlerDelegate

于 2013-01-30T16:23:13.710 に答える