簡體   English   中英

如果FileNotFoundException,則web.xml錯誤頁面不起作用

[英]web.xml error page does not work in case of FileNotFoundException

我在海關錯誤頁面及其異常類型方面遇到一些問題。 我的web.xml這個錯誤頁面;

<error-page>
    <exception-type>java.io.FileNotFoundException</exception-type>
    <location>/faces/error.xhtml</location>
</error-page>

當我單擊鏈接並且JSF文件不存在時,會發生此錯誤。 我的問題是發生此錯誤時,網頁無法重定向到我的error.xhtml頁面。

這是怎么引起的,我該如何解決?

僅當您實際請求的URL與FacesServlet的URL模式匹配時, FileNotFoundException此錯誤頁面才有效。 因此,假設FacesServlet映射到*.jsf ,然后打開/somenotexistent.jsf ,以防Mojarra確實拋出FileNotFoundException的子類,該子類的確與您的錯誤頁面匹配。

但是,如果您請求的URL與FacesServlet的URL模式匹配,則該請求將由另一個Servlet處理,通常是容器自己的DefaultServlet 如果資源不存在,則通常將返回404而不是引發異常。

您還想添加另一個錯誤頁面來解決此問題:

<error-page>
    <error-code>404</error-code>
    <location>/faces/error.xhtml</location>
</error-page>
<error-page>
    <exception-type>java.io.FileNotFoundException</exception-type>
    <location>/faces/error.xhtml</location>
</error-page>

但是,為防止重復,您還可以考慮使用servlet過濾器 ,該過濾器捕獲來自FacesServletFileNotFoundException任何實例,然后正確返回404。JSF實用程序庫OmniFaces已經有了這樣的過濾器FacesExceptionFilter 這樣,您最終只能得到錯誤代碼404上的錯誤頁面。

不,正如您所寫,當您的servlet / JSP / JSF /無論拋出什么FileNotFoundException時,都會顯示錯誤頁面。 在404的情況下,您的servlet甚至沒有被調用,因此它不會拋出任何東西。

用這個

<error-page>
  <error-code>404</error-code>
  <location>/the404_page.html</location>
</error-page>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM