Primefaces 3.4.5 の p:inputText をラップする独自の inputText 複合コンポーネントを作成しました。うまく機能しますが、p:inputText のバリデーター属性に Bean バリデーター メソッドを渡す方法がわかりません。複合コンポーネント内で f:validator タグを使用することについて読んだことがありますが、実際には p:inputText でバリデーター属性を使用する必要があります。メソッドと検証コードは、xhtml から複合コンポーネントを削除し、通常の p:inputText を使用するだけで問題なく動作します。
私のcc属性は次のとおりです。
<composite:attribute name="validator" method-signature="void f(javax.faces.context.FacesContext,
javax.faces.component.UIComponent,
java.lang.Object)" targets="inputTextField"/>
複合コンポーネント内の私のinputTextは次のとおりです。
<p:inputText id="inputTextField"
... other attributes ...
validator="#{cc.attrs.validator}" />
この複合コンポーネントを使用してバリデータ メソッドを渡すと、プロパティが見つからないというメッセージが表示されます...
Exception type: class javax.el.PropertyNotFoundException
Exception message: /view/configuration/dictionaryupdate/DictionaryItem.xhtml @27,123 validator="#{dictionaryUpdateController.validateCode}": The class 'com.ntst.caremanager.feature.dictionaryupdate.controllers.DictionaryUpdateController' does not have the property 'validateCode'.
ただし、ビュー スコープのコントローラー Bean でそのメソッドを定義しています。
public void validateCode(FacesContext context, UIComponent component, Object value) throws ValidatorException {
... code ....
}
誰かが私が欠けているものを知っていますか?
Mojarra 2.1.21 を使用しています
ありがとうございました