2009-10-21 73 views

回答

5

開發堆棧跟蹤可能來自您的JSF實現。禁用它的代碼將特定於該障礙。對於Servlet中MyFaces,使用這個初始化參數在web.xml:如果您在使用Sun實現(Mojarra

<context-param> 
    <param-name>org.apache.myfaces.ERROR_HANDLING</param-name> 
    <param-value>false</param-value> 
    </context-param> 

,可能會有一些com.sun.faces...鍵參數。

您可能還想檢查Facelets init parameterfacelets.DEVELOPMENT的值(請確保您沒有將其設置爲true)。

要指定錯誤頁面,可以使用通常的容器機制。對於Servlet,這將由specifying a error pages inweb.xml,鍵入異常類型或錯誤代碼。爲了趕上所有可拋出...

<error-page> 
    <exception-type>java.lang.Throwable</exception-type> 
    <location>/errorPage.faces</location> 
    </error-page> 

您可能會發現錯誤的JSF實現處理其他特定於供應商的支持 - 你必須檢查他們的文檔。

+0

謝謝,很好的回答!一個跟進問題,是否有可能在捕捉頁面上使用錯誤消息?(errorPage.faces) – 2009-10-21 11:26:49

+0

哦,順便說一下,我在哪裏可以找到所有com.sun.faces ...鍵控列表參數?我沒有使用Myfaces,我在Facelets中使用JSF 1.2。 – 2009-10-21 11:38:40

+0

要獲取錯誤消息,請嘗試表達式'#{requestScope ['javax.servlet.error.message']}''。要得到異常,請使用'javax.servlet.error.exception' - 請參閱Servlet規範以獲取設置爲請求映射的完整列表錯誤值(如果您想要錯誤代碼等)。您可以在Glassfish的FAQ鑽嘴魚科上下文參數:http://wiki.glassfish.java.net/Wiki.jsp?page=JavaServerFacesRI#section-JavaServerFacesRI-WhatContextParametersAreAvailableAndWhatDoTheyDo – McDowell 2009-10-21 11:53:27