在JSFs验证阶段,输入字段的验证顺序是什么?
我想要尝试的是以下内容:我有一组输入字段可能通过或未通过转换/验证。此外,我想有一些自定义验证器的输入,根据所有其他字段是否通过验证,产生不同的结果。我可以检查FacesContext以获取任何先前的消息,但是我必须确保在所有其他字段都被检查后调用这个自定义转换器,因此上面的问题。它只是Facelets-Page中定义它们的顺序吗?如果是的话,这个订单会得到保证吗?
答案 0 :(得分:2)
它只是在Facelets-Page中定义它们的顺序?
基本上,是的。组件树将以“通常的方式”递归地处理。对于每个组件,首先要处理组件本身,然后按顺序处理每个子组件。
中说明如果是这样,这个订单会得到保证吗?
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?
作为一种完全不同的替代方案,您可以考虑将整个事物包装成复合材料。