将默认验证器添加到我的自定义UIComponent

时间:2013-06-21 17:53:22

标签: jsf jsf-2 validation custom-component

我正在开发一个自定义的JSF UIInput,它期望来自用户的特制值。为了验证用户输入,我需要运行一系列检查,这些检查仅涉及手头的应用程序。这不仅仅是普通的电子邮件或电话输入字段。它是一个文本输入,其复合值需要解构为部分,每个部分都需要进行验证。

我设法自己创建组件。

@FacesComponent("MyComponent")
public class MyComponent extends UIInput {
   public String getFamily() {...}

   encodeBegin() {...}
   encodeEnd() {...}

}

mycomponent.taglib.xml捆绑在META-INF中,我可以成功使用和测试该组件。

我还实现了一个验证器类,可以完成所有工作。它准备好了。

public class AutomationDetectionValidator implements Validator {
   public void validate(...) throws ValidatorException {...}
}

但是,我需要在此组件中包含一个自定义验证器作为默认值。我可以按如下方式手动执行此操作:

<custom:myComponent>
    <f:validator validatorId=”myComponentValidator”/>
</custom:myComponent>

但预期用量为

<custom:myComponent/>

验证器应该自动存在。

我现在一直在谷歌搜索,但我能找到我们不想要的用法的基本例子。

1 个答案:

答案 0 :(得分:1)

只需将其添加到组件的构造函数中即可。

public MyComponent() {
    addValidator(new AutomationDetectionValidator());
}