2011-03-07 105 views
3

我怎样才能赶上如何捕捉FacesFileNotFoundException?

com.sun.faces.context.FacesFileNotFoundException

在Java EE Web应用程序?

我在我的web.xml文件中加入以下几行尝试过,但我没有成功:

... 
    <error-page> 
    <error-code>404</error-code> 
    <location>/404.jsf</location> 
    </error-page> 
    <error-page> 
    <error-code>500</error-code> 
    <location>/404.jsf</location> 
    </error-page> 
    <error-page> 
    <exception-type>FacesFileNotFoundException</exception-type> 
    <location>/404.jsf</location> 
    </error-page> 
    <error-page> 
    <exception-type>FileNotFoundException</exception-type> 
    <location>/404.jsf</location> 
    </error-page> 
    <error-page> 
    <exception-type>FailingHttpStatusCodeException</exception-type> 
    <location>/404.jsf</location> 
    </error-page> 
</web-app> 

回答

6

你需要指定FQN(完全合格的名称),而不是N作为异常类型。

<exception-type>com.sun.faces.context.FacesFileNotFoundException</exception-type> 

另外,如果您已经碰巧使用OmniFaces,注册其FacesExceptionFilter然后FacesFileNotFoundException将被处理为404

+0

我以前也试过,但并不能帮助。 – 2011-03-07 15:41:23

+0

究竟发生了什么呢? – BalusC 2011-03-07 15:44:54

+0

输出如下:1. StandardWrapperValve [Faces Servlet]:PWC1406:servlet的Servlet.service()Faces Servlet抛出异常 com.sun.faces.context.FacesFileNotFoundException 2. PWC1231:Servlet.service()for servlet Faces Servlet引发异常3. [email protected]:异常处理ErrorPage [exceptionType = com.sun.faces.context.FacesFileNotFoundException,location =/404.jsf] javax.servlet.ServletException:上下文已经存在在javax.faces.webapp.FacesServlet.service中激活(FacesServlet.java:422) – 2011-03-08 01:16:05