2

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 を使用しています

ありがとうございました

4

0 に答える 0