gpt4 book ai didi

@PostConstruct 方法中的重定向导致 IllegalStateException

转载 作者:行者123 更新时间:2023-12-02 19:04:24 26 4
gpt4 key购买 nike

根据answer of BalusC ,我用过

FacesContext.getCurrentInstance().getExternalContext().redirect(url);

在我的 @PostConstruct 方法中阻止 JSF 渲染 View 并重定向用户。但是,当我尝试运行代码时,我仍然在上面的行中遇到了 java.lang.IllegalStateException 异常。

WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:524)
at StudentManagedBean.CourseSummary.init(CourseSummary.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

更新:我在我的@PostConstruct方法中添加了以下行:

System.out.println("INIT " + FacesContext.getCurrentInstance().getExternalContext().isResponseCommitted());

我看到的是INIT true。我想知道是否应该在调用 @PostConstruct 方法之前提交响应?

如果您能给我建议,我将不胜感激。

最佳答案

正如我的更新中提到的,以下行打印了 INIT true:

System.out.println("INIT " + FacesContext.getCurrentInstance().getExternalContext().isResponseCommitted());

终于找到为什么会出现上述情况了。在我的页面上,在 UIComponent A 引用包含重定向功能的 ManagedBean X 之前,UIComponent B 位于页面结构中 UIComponent A 之上。因此,ManagedBean Y 部分提交了响应,这使得 ManagedBean X 无法发送重定向 请求。

关于@PostConstruct 方法中的重定向导致 IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11648151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com