我点击
<p:commandButton oncomplete="PF('dlg1').show()" />
<p:dialog widgetVar="dlg1">
<p:inputText id="dogName" value="#{mngBean.dogName}" />
</p:dialog>
在getDogName()
方法中的MngBean中抛出异常。 PrimeExceptionHandler捕获它并重定向到错误页面,但客户端没有任何事情发生。重定向不起作用,没有ajax响应发送回客户端。
除非打开对话框,否则异常处理程序在所有其他情况下都能正常工作
我无法弄清楚如何处理对话框渲染阶段抛出的异常。
答案 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();
这样我就会在显示格式错误的对话框后添加要执行的脚本,这会将其重定向到错误页面。