如何解决重定向形式的托管bean构造函数,抛出“ java.lang.IllegalStateException”
| 在我的JSF应用程序中,我需要从托管bean构造函数进行重定向。我有以下代码可以做到这一点:HttpServletResponse httpServletResponse = (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
httpServletResponse.sendRedirect(\"HomeV.jsf\");
但这引发以下异常:
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)
at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:126)
at com.sun.faces.context.ExternalContextImpl.redirect(ExternalContextImpl.java:419)
我什至尝试以下操作:
FacesContext.getCurrentInstance().getExternalContext().redirect(\"HomeV.jsf\");
正如在这里与此有关的stackoverflow问题中提到的,但我仍然面临相同的例外。
解决方法
不要在构造函数中这样做。我怀疑那里的反应是否处于适当状态。也许您可以尝试在
@PostConstruct
中进行操作,但是我不保证它会起作用。
理想情况下,您应该通过bean操作方法中的导航规则进行重定向。如果要重定向多个操作,可以使用PhaseListener
,当简单地初始化上下文时,也可以创建Bean,因此这根本不是正确的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。