在JSF 1.2自定义组件中指定Validator

时间:2012-04-13 19:25:24

标签: java lifecycle validation custom-component jsf-1.2

我已经通过自定义Validator定义(实现了javax.faces.validator.Validator接口并在faces-config中定义)。我需要我的自定义组件在我的组件代码(Renderer类)中调用此验证器。 我想让我的xhtml尽可能干净,并且不想通过嵌入

在我的xhtml中单独调用验证器
<f:validator validatorId='xx' /> 

在我的组件标签中。 就像我可以实现的方式

getConvertedValue(FacesContext context, UIComponent component, Object submittedValue) 

在我的渲染器中处理转换,我可以做一些类似于在渲染器中处理验证的东西吗?

由于

1 个答案:

答案 0 :(得分:2)

这将在UI组件级别完成,而不是在渲染器级别完成。您的自定义输入组件肯定已经扩展UIInput,否则您将遇到许多其他(未来)问题和/或您将浪费时间编写重复的代码。如果您的自定义输入组件扩展UIInput,那么您只需通过继承的UIInput#addValidator()方法添加Validator,例如组件的构造函数。

public MyCustomInputComponent() {
    addValidator(new MyCustomValidator());
}

已经实现的UIInput#validate()方法将自动执行所有转换,验证和消息处理。