1

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

<f:validator validatorId='xx' /> 

在我的组件标签中。就像我如何实施

getConvertedValue(FacesContext context, UIComponent component, Object submittedValue) 

在我的渲染器中处理转换,我可以做一些类似的事情来处理渲染器中的验证吗?

谢谢

4

1 回答 1

2

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

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

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

于 2012-04-13T19:37:21.800 回答