私は、特定のマスク、バリデーション、コンバーターを持ついくつかのコンポーネントを持っていました。
</cc:interface>
<cc:attribute name="value"/>
<cc:editableValueHolder name="mycomp" targets="input"/>
</cc:interface>
<cc:implementation>
<p:inputMask id="input" value="#{cc.attrs.value}"/>
</cc:implementation>
(私はスペースを節約するために出していますいくつかの他の属性があります):
まず、私はこのような「defaultText」と呼ばれるコンポーネントを定義しました。 editableValueHandler?を参照してください。コンバーター/バリデーターをどのコンポーネントにリンクするかを定義します。 <composite:editableValueHolder>
任意のバリ/ Aコンバータ(<f:validator for="mycomp">
)は<p:inputMask id="input">
に関連するように定義
</cc:interface>
<cc:attribute name="value"/>
<cc:attribute name="mask"/>
<cc:attribute name="jsfConverter"/>
<cc:attribute name="jsfValidator"/>
</cc:interface>
<cc:implementation>
<foo:defaultText id="dt" value="#{cc.attrs.value}" mask="#{cc.attrs.mask}">
<c:if test="#{!empty cc.attrs.jsfConverter}">
<f:converter converterId="#{cc.attrs.jsfConverter}" for="mycomp"/>
</c:if>
<c:if test="#{!empty cc.attrs.jsfValidator}">
<f:validator validatorId="#{cc.attrs.jsfValidator}" for="mycomp"/>
</c:if>
</foo:defaultText>
</cc:implementation>
:
だから、私は、例えば、 'text.xhtml' の他の構成要素を構築するために、私の 'defaultText' コンポーネントを使用しました。
それから私は自分のページに自分のテキストコンポーネントを使用します。
<foo:text value="#{dummyMBean.text}" mask="99.999-99" jsfConverter="..." jsfValidator="..."/>