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

Java 如果验证失败,如何在验证阶段后签入?,java,validation,jsf,Java,Validation,Jsf,我已经编写了一个PhaseListener,其中我正在检查验证阶段。是否有一种方法可用于在侦听器的afterPhase()方法中检查验证是否失败,验证阶段后的下一个阶段将是呈现响应阶段。使用FacesContext如何,您是否可以检查是否有任何排队消息?例如 FacesContext context = FacesContext.getCurrentInstance(); Iterator<FacesMessage> messages = context.getMessages();

我已经编写了一个
PhaseListener
,其中我正在检查验证阶段。是否有一种方法可用于在侦听器的
afterPhase()
方法中检查验证是否失败,验证阶段后的下一个阶段将是呈现响应阶段。

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

FacesContext context = FacesContext.getCurrentInstance();
Iterator<FacesMessage> messages = context.getMessages();
FacesContext context=FacesContext.getCurrentInstance();
迭代器消息=context.getMessages();

希望有帮助。

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

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

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

如果您使用的是JSF 2.0,请使用检查它

if (context.isValidationFailed()) {
    // Validation has failed.
}
顺便说一下,您还可以在视图侧检查它,如下所示:


验证失败


这正是我现在要做的,FacesContext.getCurrentInstance().getMaximumSeverity!=null,谢谢:)如果您有自己的验证器,可以验证信息或警告消息,那么您可能必须忽略它。