2013-06-13 32 views
4

在我的項目中,當我的代碼發生特定錯誤時,我必須顯示錯誤頁面。
我在header.xhtml頁面中添加了以下腳本。此頁面添加到每個頁面。因此,無論何時出現錯誤,我想顯示錯誤頁面。錯誤配置爲jsf中的錯誤頁面?

<script type="text/javascript"> 
      A4J.AJAX.onExpired = function(loc, expiredMsg) { 
       window.location = "../facelets/error/invalidSessionLogin.jsf"; 
      }; 

      A4J.AJAX.onError = function(req, status, message) { 
       window.location = "../facelets/error/ajaxError.jsf"; 
      }; 
     </script> 

但這不是工作..
我也配置在web.xml.The 500404錯誤代碼如下所示。

<context-param> 
     <description>Use this to suppress Facelets error page</description> 
     <param-name>org.apache.myfaces.ERROR_HANDLING</param-name> 
     <param-value>false</param-value> 
    </context-param> 
    <error-page> 
     <error-code>500</error-code> 
     <location>/facelets/error/internalErrorHome.jsf</location> 
    </error-page> 
    <!-- if required page not available --> 
    <error-page> 
     <error-code>404</error-code> 
     <location>/facelets/error/pageNotFoundErrorHome.jsf</location> 
    </error-page> 

但是,這給了我下面的錯誤。

11:41:30,618 ERROR [[localhost]] Exception Processing ErrorPage[errorCode=404, location=/facelets/error/pageNotFoundErrorHome.jsf] 
com.sun.faces.context.FacesFileNotFoundException: /facelets/error/pageNotFoundErrorHome.xhtml Not Found in ExternalContext as a Resource 

我不知道我要去的地方錯誤的.. 我不明白這一點在的ExternalContext沒有找到錯誤信息作爲一種資源

回答

5
  1. 您應該測試你所提到的路徑是否可達與否,並且首先解決,如果他們不工作的路徑。

  2. 爲什麼不爲這些錯誤代碼創建導航案例,然後使用相對路徑而不是使用相對路徑來設置合適的URL。

    window.location =「$ {request.contextpath}/error/404」;

考慮例如:

mywebapp 
    | 
    |---WEB-INF 
    | 
    |---error 
    | | 
    | |---404.xhtml 

    (and so on) 

在web.xml:

<error-page> 
    <error-code>404</error-code> 
    <location>/error/404.xhtml</location> 
</error-page> 

相若方式和500錯誤碼。

+0

你能舉個簡單的例子..如何在jsf頁面設置路徑。 – vijayk

+0

看看更新的答案。 –

+0

仍然是相同的錯誤..沒有在外部上下文中找到作爲資源..這是什麼意思.. – vijayk

-1

AFAIK你不能註冊一個JSF頁面作爲web.xml中的錯誤頁面。相反,你必須使用JSP。

<error-page> 
    <error-code>404</error-code> 
    <location>/error404.jsp</location> 
</error-page> 
+0

你可以!我已經在做。 –

+0

是的,您可以使用JSF頁面 – user1156544

+0

@tmandry:我不明白原因。你能解釋一下嗎?我有與「* .xhtml」文件相同的問題作爲錯誤頁面。他們不工作。 – Toru