使用<h:inputXxx validator>
属性和<f:validator>
标签有什么区别?
<h:inputText ... validator="someValidator">
<h:inputText ...>
<f:validator validatorId="someValidator" />
我应该在什么时候使用哪一个?
validator
属性允许您引用一个独立的托管bean方法,而不仅仅是验证器ID,像这样:
<h:inputSomething validator="#{bean.validate}" />
在支持bean类中使用validate(FacesContext context, UIComponent component, Object value)
方法,而不需要Validator
实现。
<f:validator>
允许您通过validator
属性在输入上注册多个验证器,而不是只有一个。
使用哪一个取决于具体的功能需求。只要选择需要最少代码的那个,这样你最终会得到干净的代码。
让我们假设这里有Spring配置。
在第一种情况下,"fooValidator"将是一个<beanId>
和相应的类(i。E验证器类)将被调用,验证将发生。
在第二种情况下,应该是"#{someBean.validationMethod}"
。在这种情况下,验证方法将被调用。
第一个是好的方法。因为在这种情况下,我们的验证器类扩展了JSF的默认validator接口并实现了validate()方法。
如果您想自定义验证过程,则可以选择第二个。
First将在渲染页面时调用,而second则不太确定。但是我想,在渲染的时候也叫