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

时间:2015-01-29 13:57:32

标签: ajax exception primefaces dialog

我点击

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

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

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

1 个答案:

答案 0 :(得分:0)

Primefaces在渲染部分响应对话期间抛出异常时发现了这种情况。在这种情况下,部分响应编写器最终会出现格式错误的XML,并且屏幕上会出现无效内容。 我想出的唯一解决方案是提升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();

这样我就会在显示格式错误的对话框后添加要执行的脚本,这会将其重定向到错误页面。