簡體   English   中英

重定向表單托管bean構造函數拋出“java.lang.IllegalStateException”

[英]Redirect form managed bean constructor throwing “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,所以這根本不是正確的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM