重定向到错误页面不适用于打开的对话框

Redirect to error page doesn't work with open dialog

我点击

<p:commandButton oncomplete="PF('dlg1').show()" />

 <p:dialog widgetVar="dlg1">
   <p:inputText id="dogName" value="#{mngBean.dogName}" />
</p:dialog>

MngBean在getDogName()方法中抛出异常。 PrimeExceptionHandler 捕获它并重定向到错误页面,但客户端没有任何反应。重定向不起作用,并且没有 ajax 响应发送回客户端。 异常处理程序在所有其他情况下都能正常工作,但对话框打开时除外。 我不知道如何处理对话框渲染阶段抛出的异常。

Primefaces 发现了这种情况,即在渲染对话框的部分响应期间抛出异常。在这种情况下,部分响应编写器以格式错误的 XML 结束,并且对话框因内容无效而在屏幕上挂起。 我想出的唯一解决方案是 owerride PrimeExceptionHandler 及其 handleRedirect 方法,我在其中添加了

PartialResponseWriter writer = context.getPartialViewContext().getPartialResponseWriter();
        writer.startElement( "script", null );
        writer.write( "window.location.href = '" + writer.write("window.location.href = '" + context.getExternalContext().getRequestContextPath() + errorPage + "?message=" + info.getMessage() + "';" );
        writer.endElement( "script" );
        writer.getWrapped().endCDATA();
        writer.endElement( "update" );
        writer.getWrapped().endDocument();

通过这种方式,我添加了在格式错误的对话框出现后执行的脚本,这会将其重定向到错误页面。