<h:inputxxx validator =“”>属性与<f:validator>标记之间的区别</f:验证者> </h:inputxxx>

时间:2013-03-15 12:16:40

标签: validation jsf

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

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

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

2 个答案:

答案 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()方法。

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

首先会在呈现页面时调用,而不是非常确定第二个页面。但我认为,在渲染时也会调用它。