Ajax 如何从JSF2.2中的错误页面preRenderView重定向?
我想在我的应用程序中将JSF2.1(myfaces)升级到2.2。我刚刚更改了TomEE/lib文件夹(TomEE-1.7.5)中的两个myfaces…jar文件。除了一件事外,一切似乎都很顺利。我在web.xml中配置了一个错误页面:Ajax 如何从JSF2.2中的错误页面preRenderView重定向?,ajax,jsf,redirect,jsf-2.2,omnifaces,Ajax,Jsf,Redirect,Jsf 2.2,Omnifaces,我想在我的应用程序中将JSF2.1(myfaces)升级到2.2。我刚刚更改了TomEE/lib文件夹(TomEE-1.7.5)中的两个myfaces…jar文件。除了一件事外,一切似乎都很顺利。我在web.xml中配置了一个错误页面: <error-page> <error-code>500</error-code> <location>/error/500.jsf</location> </error-page
<error-page>
<error-code>500</error-code>
<location>/error/500.jsf</location>
</error-page>
500
/错误/500.jsf
为了捕获ajax post中的错误,omnifaces的FullAjaxExceptionHandlerFactory在faces-config.xml中声明:
<factory>
<exception-handler-factory>org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory</exception-handler-factory>
</factory>
org.omnifaces.exceptionhandler.fullajaxexceptionhandler工厂
在错误页面中有一个preRenderView函数,其中有一个条件重定向。在JSF2.1中,它工作得非常好。但是对于JSF 2.2,在重定向的情况下,由于其他一些异常,我得到以下消息:
哎呀
处理ajax请求时出现问题。随后,
处理错误页时发生另一个问题,应
告诉你那个问题
日志中的另一个异常:
严重:FullAjaxExceptionHandler:嗯,发生了另一个异常
在呈现错误页面'/error/500.jsf'期间。试图呈现一个
现在是硬编码错误页面。java.lang.IllegalStateException:无法
写入数据后更改缓冲区大小
我尝试使用其他事件处理程序,而不是preRenderView(我认为可能应该在生命周期的早期进行重定向(?)。对于postAddToView事件,结果是相同的,根本不调用其他事件
我也尝试使用JSF2.2的f:viewAction来代替f:event,但是在ajax post的情况下,在错误页面上没有调用任何可能的viewAction事件(onPostback=“true”参数也没有帮助)
问题:
在重定向的情况下,为什么会在错误页面上出现另一个异常?(myfaces 2.1没有任何问题)
为什么在错误页面上根本不调用viewAction函数?(当错误导致转到ajax请求中出现的错误页面时)
那么如何使用JSF(myfaces)2.2从错误页面进行(有条件的)重定向?