繁体   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