2

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

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

4

1 回答 1

2

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

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


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

是的。这在JSF 2.0 规范中有说明:

2.2.3 过程验证

...

在请求处理生命周期的流程验证阶段,JSF 实现必须调用树的processValidators()方法UIViewRoot。这通常会导致processValidators()树中每个组件的方法被递归调用,如该UIComponent.processValidators()方法的 API 参考中所述。

...

因此,自定义转换器应由最后一个组件或在所有所需组件之后<h:inputHidden>的“存根”组件引用。所需的组件可以通过组件绑定传递。另请参阅此相关答案:JSF 不支持跨字段验证,是否有解决方法?

作为一种完全不同的选择,您可以考虑将整个事物包装在一个复合材料中。

于 2012-10-17T12:22:20.513 回答