Jsf 如何捕获FacesFileNotFoundException

Jsf 如何捕获FacesFileNotFoundException,jsf,http-status-code-404,deltaspike,Jsf,Http Status Code 404,Deltaspike,尽管我做了上面写的,但我仍然无法解决这个问题。问题是web.xml中的更改不会影响应用程序。顺便说一下,我正在使用ExceptionHandler(使用org.jboss.solder.exception.control.handleExceptions.handleExceptions注释)。我试图在ExceptionHandler类中添加方法,但无法导入FacesFileNotFoundException。因此,我的问题是,尽管应用程序抛出FacesFileNotFoundException

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

您必须在web.xml中正确添加错误页面,您必须放置完整的异常,当抛出异常时重定向的目标位置是html而不是xhtml,这非常重要,必须是这样的

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

com.sun.faces.context.FacesFileNotFoundException
/pagenotfound.html
我不知道的是如何使异常不显示在控制台上,但这样工作很好

我试图在ExceptionHandler类中添加方法,但无法导入FacesFileNotFoundException。因此,我的问题是,尽管应用程序抛出FacesFileNotFoundException,为什么我不能在页面中导入FacesFileNotFoundException异常类

com.sun.*
包特定于JSF实现Mojarra。显然,在compiletime类路径中有JSFAPIJAR文件,但没有JSF实现JAR文件

这应该不是什么大问题。您应该尽量不让web应用程序依赖于特定的JSF实现。您应该尽量避免导入/引用特定于实现的类。
FacesFileNotFoundException
扩展自
java.io.FileNotFoundException
,因此我建议将其导入。别忘了打开
FacesException
。有关一些提示,请参见“和”的源代码

如果您确实需要导入特定于Mojara的
FacesFileNotFoundException
,并希望对代码进行编译,那么您应该将JSF实现JAR文件添加到compiletime类路径中。具体如何做到这一点取决于所使用的IDE。在Eclipse中,您应该在构建路径中从appserver引用JSF实现JAR文件


请注意,JSF
ExceptionHandler
web.xml

中默认不做任何错误页面声明,请重新阅读问题。OP正在尝试创建自定义异常处理程序。