0

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

4

2 回答 2

1

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

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

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

于 2012-11-15T23:03:46.193 回答
1

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

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

这应该不是什么大问题。您应该尽量不要让您的 Web 应用程序依赖于特定的 JSF 实现。您应该尽量避免导入/引用特定于实现的类。FacesFileNotFoundExceptionextends from ,java.io.FileNotFoundException所以我建议改为导入它。不要忘记打开包装FacesException。有关一些提示,另请参阅OmniFaces的源代码FullAjaxExceptionHandlerFacesExceptionFilter.

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

请注意,ExceptionHandler默认情况下, JSFweb.xml.

于 2012-11-16T11:49:02.507 回答