【问题标题】:How to catch FacesFileNotFoundException如何捕捉 FacesFileNotFoundException
【发布时间】:2014-12-12 19:14:20
【问题描述】:

虽然我做了page 中所写的内容,但我仍然无法解决这个问题。问题是 web.xml 中的更改不会影响应用程序。顺便说一句,我正在使用 ExceptionHandler (使用 org.jboss.solder.exception.control.HandlesExceptions.HandlesExceptions 注释)。我试图在我的 ExceptionHandler 类中添加一个方法,但我无法导入 FacesFileNotFoundException。所以这里是我的问题,虽然应用程序抛出了FacesFileNotFoundException,为什么我不能在页面中导入FacesFileNotFoundException异常类?

【问题讨论】:

    标签: jsf http-status-code-404 deltaspike


    【解决方案1】:

    你必须在web.xml中正确添加错误页面,你必须把完整的异常和抛出异常时重定向的目标位置是html而不是xhtml,这很重要,它有成为这样的人

    <error-page>
        <exception-type>com.sun.faces.context.FacesFileNotFoundException</exception-type>
        <location>/pagenotfound.html</location>
    </error-page>
    

    我不知道如何使控制台上不显示异常,但这样可以正常工作

    【讨论】:

    • 请重新阅读问题。 OP 正在尝试创建自定义异常处理程序。
    【解决方案2】:

    我尝试在我的 ExceptionHandler 类中添加一个方法,但我无法导入 FacesFileNotFoundException。所以这里是我的问题,虽然应用程序抛出了FacesFileNotFoundException,为什么我不能在页面中导入FacesFileNotFoundException异常类?

    com.sun.* 包特定于 JSF 实现 Mojarra。显然,您在编译时类路径中有 JSF API JAR 文件,但没有 JSF 实现 JAR 文件。

    这应该不是什么大问题。您应该尽量不要让您的 Web 应用程序依赖于特定的 JSF 实现。您应该尽量避免导入/引用特定于实现的类。 FacesFileNotFoundException 扩展自 java.io.FileNotFoundException,所以我建议改为导入它。不要忘记打开FacesException。一些提示,另见OmniFaces'FullAjaxExceptionHandlerFacesExceptionFilter的源码。

    如果您绝对需要导入特定于 Mojarra 的 FacesFileNotFoundException 并希望您的代码能够编译,那么您应该将 JSF 实现 JAR 文件添加到编译时类路径。具体如何做到这一点取决于所使用的 IDE。在 Eclipse 中,您应该在 Build Path 中引用来自应用服务器的 JSF 实现 JAR 文件。

    请注意,JSF ExceptionHandler 默认情况下没有web.xml 中声明错误页面。

    【讨论】:

      猜你喜欢
      • 2011-12-30
      • 1970-01-01
      • 2018-10-30
      • 2017-07-15
      • 1970-01-01
      • 2012-03-20
      • 2020-01-27
      • 1970-01-01
      • 2014-01-01
      相关资源
      最近更新 更多