[英]JSF 1.2 IllegalState Exception from backing bean redirect to external site
我正在使用命令按钮将表单发布到支持bean方法。 在该方法的最后,我尝试在响应中设置各种选项后尝试重定向到外部站点。 由于重定向,我收到了IllegalState异常。
at com.ibm.ws.webcontainer.webapp.WebAppDispatcherContext.sendRedirectWithStatusCode(WebAppDispatcherContext.java:571)
at com.ibm.ws.webcontainer.webapp.WebAppDispatcherContext.sendRedirect(WebAppDispatcherContext.java:528)
at com.ibm.ws.webcontainer.srt.SRTServletResponse.sendRedirect(SRTServletResponse.java:1234)
at com.sun.faces.context.ExternalContextImpl.redirect(ExternalContextImpl.java:426)
at com.sun.faces.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:181)
这是支持bean方法中的问题代码:
if ( redirectPage != null ) {
logger.debug("attempting redirect: " + redirectPage);
try {
getFacesContext().getExternalContext().redirect(redirectPage);
FacesContext.getCurrentInstance().responseComplete();
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
return result;
我意识到return语句是不必要的,不应到达,但是在填充redirectPage的情况下,这是必需的功能。 我不能使用导航规则来设置动态外部网站重定向,对吗? 我能做什么?
仔细观察异常,似乎导航处理程序正在引起问题。 显然,JSF不喜欢我跳出一个commandButton调用的方法,有什么想法可以解决此问题吗?
我刚刚意识到了我的问题-我已经习惯于使用JSF的导航规则功能,以至于我完全忽略了这样一个事实:如果不打算使用导航规则,则不需要返回值! 例外是告诉我导航存在问题,但我没有看到。
对我来说,最简单的解决方法是将commandButton操作设置为没有返回值且不受任何导航规则约束的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.