2012-11-12 90 views
0

我正在處理我們的應用程序中的異常處理。我使用try catch塊來捕獲我的代碼中發生的異常,我也可以通過編寫一個監聽器並在「faces-config.xml」中註冊監聽器來處理異常。JSF 1.2異常處理

但我面臨的問題,在構造函數或錯誤代碼醒目,如「空指針異常」意外錯誤500,400等

我使用的標記在「web.xml中」

<error-page> 
     <exception-type>java.lang.Exception</exception-type> 
     <location>/sc00/ErrorPage.jsp</location> 
</error-page> 

我嘗試了很多方法來處理例外,任何人都可以幫助我找到解決方案。當我嘗試處理這些異常時,出現的錯誤如下。

我使用JSF 1.2和服務器的WebSphere 8

控制檯顯示以下異常。

com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0014E: Uncaught service() exception root cause Faces Servlet: javax.servlet.ServletException 

E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: An exception was thrown by one of the service methods of the servlet [/sc00/ErrorPage.jsp] in application [MembershipEligibilityScreensEAR]. Exception created : [java.lang.RuntimeException: FacesContext not found 

我的錯誤頁面在/WebContent/sc00/ErrorPage.jsp中,ErrorPage.jsp沒有與其關聯的支持bean。

許多解決方案,讓我來看看面的Servlet的URL路徑,在我的web.xml中的Servlet映射是如下

<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

    <servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.faces</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>/faces/*</url-pattern> 
</servlet-mapping> 

都在我的faces-config.xml中的路徑是指/ FolderName/JspName,它們工作正常,即使在Navigation.xml中也可以正常工作。

我怎樣才定位到的errorPage.jsp,有沒有什麼辦法讓我可以寫一個監聽器,這種問題

對不起張貼太多冗餘的問題,我是新來的JSF和我不不知道StackOverflow的規則,我對我造成的問題表示歉意。

任何解決方案,將不勝感激。

+0

這不是JSF問題,而是泛型Java Web應用程序。 –

+0

你有沒有解決上述問題的方法?我不明白你爲什麼說它不是JSF問題,異常明顯出現在支持bean的構造函數中,我無法處理它。 – ylnsagar

+0

您可以像這樣在JSP中使用NPE:'<%String s = null; s.length(); %>'。 NPE將會出現並且會被打印在JSP中(您是否看到過JFS代碼?我沒有)。 –

回答

0
java.lang.RuntimeException: FacesContext not found 

當你請求通過不將FacesServlet的URL模式(誰是一個負責創建FacesContext)匹配一個URL包含JSF組件的JSP頁面會發生。

您需要更改錯誤頁面位置以匹配FacesServlet的網址格式,如web.xml中所定義。基於你的duplicate questions關於這個主題,這是*.faces,其中*.faces,所以設置錯誤頁面的位置應該如下,正如我在你的first question關於這個主題的評論中所建議的。

<location>/sc00/ErrorPage.faces</location> 
+0

我試過,但它不工作。我真的嘗試了一百萬次,我還創建了一個名爲「error.html」的html頁面,它不工作。我請你看看http://stackoverflow.com/questions/13353198/jsf-1-2-web-xml-and-exception-handling。在這個問題中,我還發布了web.xml,以便您可以查找是否有任何配置錯誤。我爲JSF 2獲得了許多解決方案,但JSF1.2對於這種情況並沒有多少解決方案。你能否建議我有什麼方法來編寫監聽器或過濾器。重複問題的原因是我沒有得到解決問題的答案 – ylnsagar

+0

Faces Servlet * .faces Faces Servlet/faces/*這些是web.xml中的兩個URL模式 – ylnsagar

+0

這是不可能的當使用'error.html'而不是帶有JSF組件的JSP頁面時,會得到'java.lang.RuntimeException:FacesContext not found'。請告訴您使用'error.html'時得到的新錯誤。你絕對不應該忽視錯誤,就好像它們是裝飾一樣。至於每次重新提出同樣的問題,這不是它在這裏的工作原理。如果你沒有得到(令人滿意的)答案,只需編輯和改進你的問題。 – BalusC