如果验证失败,如何在验证阶段后检入?

时间:2012-02-03 07:39:54

标签: java validation jsf

我写了PhaseListener,我正在检查验证阶段。有没有办法可以在afterPhase()侦听器方法中检查验证失败,验证阶段之后的下一阶段将是渲染响应阶段。

3 个答案:

答案 0 :(得分:6)

如果您使用的是JSF 2.0,只需使用FacesContext#isValidationFailed()进行检查即可。

if (context.isValidationFailed()) {
    // Validation has failed.
}

顺便说一句,您也可以在视图中检查它,如下所示:

<h:panelGroup rendered="#{facesContext.validationFailed}">
    <p>Validation has failed.</p>
</h:panelGroup>

答案 1 :(得分:3)

使用FacesContext中的最大错误严重性

Severity maximumSeverity = FacesContext.getCurrentInstance().getMaximumSeverity();
boolean validationFailed=false;
if (maximumSeverity != null
        && (maximumSeverity==FacesMessage.SEVERITY_ERROR || maximumSeverity
            ==FacesMessage.SEVERITY_FATAL)) {
    validationFailed=true;
}

如果validationFailed的值为true,则会出现一些错误消息。

答案 2 :(得分:1)

如何使用FacesContext,您可以检查是否有任何排队的消息?例如

FacesContext context = FacesContext.getCurrentInstance();
Iterator<FacesMessage> messages = context.getMessages();
希望有所帮助。