[英]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过滤器 ,该过滤器捕获来自FacesServlet
的FileNotFoundException
任何实例,然后正确返回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.