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調用的方法,有什麼想法如何解決這個問題?
你會發布出現異常的完整堆棧跟蹤! – 2014-12-11 03:22:48
我剛剛意識到我的問題 - 我很習慣使用JSF的導航規則功能,我完全忽略瞭如果不打算使用導航規則就不需要返回值的事實! 簡單的修復方法是讓我將commandButton操作設置爲一個沒有返回值並且與任何導航規則無關的方法。 – 2014-12-11 03:32:55