虽然我做了page所写的内容,但我仍然无法解决这个问题。问题是web.xml中的更改不会影响应用程序。顺便说一句,我正在使用ExceptionHandler(使用org.jboss.solder.exception.control.HandlesExceptions.HandlesExceptions批注)。我试图在我的ExceptionHandler类中添加一个方法但是我无法导入FacesFileNotFoundException。所以这是我的问题,虽然应用程序抛出了FacesFileNotFoundException,为什么我不能在页面中导入FacesFileNotFoundException异常类?
答案 0 :(得分:1)
你必须在web.xml中正确添加错误页面,你必须把完整的异常和你抛出异常时重定向的目标位置是html而不是xhtml,这非常重要,它有是这样的
<error-page>
<exception-type>com.sun.faces.context.FacesFileNotFoundException</exception-type>
<location>/pagenotfound.html</location>
</error-page>
我不知道的是如何使控制台上没有显示异常,但它的工作方式很好
答案 1 :(得分:1)
我试图在我的ExceptionHandler类中添加一个方法但是我无法导入FacesFileNotFoundException。所以这是我的问题,虽然应用程序抛出了FacesFileNotFoundException,为什么我不能在页面中导入FacesFileNotFoundException异常类?
com.sun.*
包特定于JSF实现Mojarra。显然,您在编译时类路径中有JSF API JAR文件,而不是JSF实现JAR文件。
这应该不是一个大问题。您应该尝试不要使您的Web应用程序依赖于特定的JSF实现。您应该尽量避免导入/引用特定于实现的类。 FacesFileNotFoundException
从java.io.FileNotFoundException
延伸,因此我建议您将其导入。别忘了打开FacesException
。对于某些提示,另请参阅OmniFaces'FullAjaxExceptionHandler
和FacesExceptionFilter
的源代码。
如果您绝对需要导入特定于Mojarra的FacesFileNotFoundException
并希望编译代码,那么您应该将JSF实现JAR文件添加到编译时类路径中。具体取决于所使用的IDE。在Eclipse中,您应该在 Build Path 中的appserver中引用JSF实现JAR文件。
请注意,JSF ExceptionHandler
默认 nothing ,web.xml
中包含错误页面声明。