2014-12-11 73 views
0

我正在使用命令按鈕將表單發佈到支持bean的方法。在該方法結束時,我試圖在響應中設置各種選項後重定向到外部網站。由於重定向,我得到一個IllegalState異常。JSF 1.2 IllegalState支持bean重定向到外部站點的異常

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調用的方法,有什麼想法如何解決這個問題?

+0

你會發布出現異常的完整堆棧跟蹤! – 2014-12-11 03:22:48

+0

我剛剛意識到我的問題 - 我很習慣使用JSF的導航規則功能,我完全忽略瞭如果不打算使用導航規則就不需要返回值的事實! 簡單的修復方法是讓我將commandButton操作設置爲一個沒有返回值並且與任何導航規則無關的方法。 – 2014-12-11 03:32:55

回答

0

我剛剛意識到我的問題 - 我很習慣使用JSF的導航規則功能,我完全忽略了一個事實,即如果不打算使用導航規則,則返回值是不必要的!例外是告訴我這是一個導航問題,但我沒有看到它。

簡單的修復方法是讓我把commandButton動作設置爲一個沒有返回值且沒有綁定到任何導航規則的方法。