我已经通过自定义Validator定义(实现了javax.faces.validator.Validator接口并在faces-config中定义)。我需要我的自定义组件在我的组件代码(Renderer类)中调用此验证器。 我想让我的xhtml尽可能干净,并且不想通过嵌入
在我的xhtml中单独调用验证器<f:validator validatorId='xx' />
在我的组件标签中。 就像我可以实现的方式
getConvertedValue(FacesContext context, UIComponent component, Object submittedValue)
在我的渲染器中处理转换,我可以做一些类似于在渲染器中处理验证的东西吗?
由于
答案 0 :(得分:2)
这将在UI组件级别完成,而不是在渲染器级别完成。您的自定义输入组件肯定已经扩展UIInput
,否则您将遇到许多其他(未来)问题和/或您将浪费时间编写重复的代码。如果您的自定义输入组件扩展UIInput
,那么您只需通过继承的UIInput#addValidator()
方法添加Validator
,例如组件的构造函数。
public MyCustomInputComponent() {
addValidator(new MyCustomValidator());
}
已经实现的UIInput#validate()
方法将自动执行所有转换,验证和消息处理。