使用<h:inputXxx validator>
属性和<f:validator>
代码有什么区别?
<h:inputText ... validator="someValidator">
<h:inputText ...>
<f:validator validatorId="someValidator" />
我什么时候应该使用哪一个?
答案 0 :(得分:3)
validator
属性允许您引用独立的托管bean方法而不仅仅是验证器ID,如下所示:
<h:inputSomething validator="#{bean.validate}" />
在支持bean类中使用validate(FacesContext context, UIComponent component, Object value)
方法,而无需Validator
实现。
<f:validator>
允许您在输入中注册多个验证器,而不是仅通过validator
属性注册一个验证器。
使用哪一个取决于具体的功能要求。只需选择需要最少代码的代码,以便最终获得干净的代码。
答案 1 :(得分:0)
让我们假设我们在这里有Spring Configs。
然后在第一种情况下&#34; fooValidator&#34;将是一个<beanId>
并且将调用相应的类(即验证器类)并进行验证。
在第二种情况下,这应该是"#{someBean.validationMethod}"
。在这种情况下,将调用验证方法。
第一个是好方法。因为在这种情况下,我们的验证器类扩展了JSF的默认Validator接口并实现了validate()方法。
如果您想自定义验证过程,则第二个是好的。
首先会在呈现页面时调用,而不是非常确定第二个页面。但我认为,在渲染时也会调用它。