Rob*_*rto 1 error-handling jsf
我对海关错误页面及其异常类型有一些问题。我的web.xml这个错误页面中有;
<error-page>
<exception-type>java.io.FileNotFoundException</exception-type>
<location>/faces/error.xhtml</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)
当我单击链接并且 JSF 文件不存在时,会发生此错误。我的问题是,当发生此错误时,网页不会重定向到我的error.xhtml页面。
这是如何引起的以及如何解决?
仅FileNotFoundException当您实际请求的 URL 与FacesServlet. 因此,想象一下 被FacesServlet映射到*.jsf,然后打开/somenotexistent.jsf将在 Mojarra 确实抛出一个子类的情况下FileNotFoundException确实与您的错误页面匹配。
但是,如果您请求的 URL 与的 URL 模式不FacesServlet匹配,则该请求将由另一个 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>
Run Code Online (Sandbox Code Playgroud)
然而,为了防止这种重复,您还可以考虑使用servlet 过滤器,它捕获FileNotFoundException来自的任何实例FacesServlet,然后正确返回 404。JSF 实用程序库OmniFaces已经有这样的过滤器,即FacesExceptionFilter. 这样你最终只能看到错误代码为 404 的错误页面。
| 归档时间: |
|
| 查看次数: |
4780 次 |
| 最近记录: |