我正在使用omnifaces来处理ajax超时异常。
在faces-config:
配置后<factory>
<exception-handler-factory>org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory</exception-handler-factory>
</factory>
它工作正确地重定向到登录页面,在web.xml配置。
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/public/index.jsf?expired=true</location>
</error-page>
但我发现了两个错误:
1。重定向忽略了查询字符串的存在(?expired = true)。
2. 使用primefaces组件p:对话框与modal =“true”,页面被重定向到已定义的页面,但页面保持不可用,因为重定向已完成,但因此阻止了应用程序上的工作流程主窗口。
Omnifaces 1.6.3 Primefaces 3.5
你是否经历过这种情况?
答案 0 :(得分:1)
1。重定向忽略查询字符串的存在(?expired = true)。
您已将此报告为issue 287,这很好。
2。使用primefaces组件p:对话框与modal =“true”,页面被重定向到已定义的页面,但页面保持不可用,因为重定向已完成,但因此阻止了应用程序主窗口上的工作流程。
PrimeFaces覆盖窗口小部件被称为“挂起”,当完成时 - 由于渲染期间的异常,应该隐藏ajax请求的覆盖 - 无法执行。您需要将以下部分添加到错误页面以修复该问题:
<h:outputScript target="body" rendered="#{facesContext.partialViewContext.ajaxRequest}">
setTimeout(function() {
$(".ui-widget-overlay").hide();
}, 250);
</h:outputScript>