验证输入字段的顺序是什么?

时间:2012-10-17 12:08:11

标签: validation jsf

在JSFs验证阶段,输入字段的验证顺序是什么?

我想要尝试的是以下内容:我有一组输入字段可能通过或未通过转换/验证。此外,我想有一些自定义验证器的输入,根据所有其他字段是否通过验证,产生不同的结果。我可以检查FacesContext以获取任何先前的消息,但是我必须确保在所有其他字段都被检查后调用这个自定义转换器,因此上面的问题。它只是Facelets-Page中定义它们的顺序吗?如果是的话,这个订单会得到保证吗?

1 个答案:

答案 0 :(得分:2)

  

它只是在Facelets-Page中定义它们的顺序?

基本上,是的。组件树将以“通常的方式”递归地处理。对于每个组件,首先要处理组件本身,然后按顺序处理每个子组件。


  

如果是这样,这个订单会得到保证吗?

是。这在JSF 2.0 specification

中说明
  

2.2.3流程验证

     

...

     

在请求处理生命周期的Process Validations阶段,JSF实现必须调用树的processValidators()的{​​{1}}方法。这通常会导致树中每个组件的UIViewRoot方法被称为递归,如processValidators()方法的API参考中所述。

     

...

因此,在所有所需组件之后,最后一个组件或“stub”UIComponent.processValidators()组件应该引用自定义转换器。可以通过组件绑定传递所需的组件。另请参阅此相关答案:JSF doesn't support cross-field validation, is there a workaround?

作为一种完全不同的替代方案,您可以考虑将整个事物包装成复合材料。