2

<h:inputXxx validator>使用属性和<f:validator>标签有什么区别?

<h:inputText ... validator="someValidator">
<h:inputText ...>
    <f:validator validatorId="someValidator" />               

我什么时候应该使用哪一个?

4

2 回答 2

3

validator属性允许您引用独立的托管 bean 方法,而不仅仅是验证器 ID,如下所示:

<h:inputSomething validator="#{bean.validate}" />

使用validate(FacesContext context, UIComponent component, Object value)支持 bean 类中的方法而不需要Validator实现。

允许您在<f:validator>输入上注册多个验证器,而不是仅通过validator属性注册一个。

使用哪一个取决于具体的功能要求。只需选择需要最少代码量的代码,这样您就可以得到干净的代码。

于 2013-03-15T12:46:12.387 回答
0

假设我们这里有 Spring Configs。

然后在第一种情况下,“fooValidator”将是一个<beanId>,并且将调用相应的类(即验证器类)并进行验证。

在第二种情况下,应该类似于"#{someBean.validationMethod}". 在这种情况下,将调用验证方法。

第一个是好方法。因为在这种情况下,我们的验证器类扩展了 JSF 的默认 Validator 接口并实现了 validate() 方法。

第二个很好,如果您想自定义验证过程。

First 将在您的页面呈现时被调用,并且不太确定 second。但我认为,这也是在渲染时调用的。

于 2013-03-15T12:47:13.477 回答