我创建了自己的inputText复合组件,它包装了Primefaces 3.4.5中的p:inputText。它运行良好,但我无法弄清楚如何将bean验证器方法传递给p:inputText中的validator属性。我已经读过在复合组件中使用f:validator标签,但我真的需要在p:inputText上使用validator属性。如果我从我的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
谢谢