【发布时间】:2012-02-03 07:39:54
【问题描述】:
我写了一个PhaseListener,在其中我正在检查验证阶段。有没有一种方法可以让我在侦听器的afterPhase() 方法中检查验证是否失败,验证阶段之后的下一阶段将是渲染响应阶段。
【问题讨论】:
标签: java validation jsf
我写了一个PhaseListener,在其中我正在检查验证阶段。有没有一种方法可以让我在侦听器的afterPhase() 方法中检查验证是否失败,验证阶段之后的下一阶段将是渲染响应阶段。
【问题讨论】:
标签: java validation jsf
如果您使用的是 JSF 2.0,只需使用 FacesContext#isValidationFailed() 进行检查。
if (context.isValidationFailed()) {
// Validation has failed.
}
您也可以在视图侧检查它,如下所示:
<h:panelGroup rendered="#{facesContext.validationFailed}">
<p>Validation has failed.</p>
</h:panelGroup>
【讨论】:
对 FacesContext 中的错误使用最大严重性
Severity maximumSeverity = FacesContext.getCurrentInstance().getMaximumSeverity();
boolean validationFailed=false;
if (maximumSeverity != null
&& (maximumSeverity==FacesMessage.SEVERITY_ERROR || maximumSeverity
==FacesMessage.SEVERITY_FATAL)) {
validationFailed=true;
}
如果validationFailed 的值为true,则存在一些错误消息。
【讨论】:
使用 FacesContext 怎么样,你能检查是否有任何排队的消息吗?例如。
FacesContext context = FacesContext.getCurrentInstance();
Iterator<FacesMessage> messages = context.getMessages();
希望有帮助。
【讨论】: