gpt4 book ai didi

java - 为什么屏幕上显示的是异常而不是错误页面?

转载 作者:搜寻专家 更新时间:2023-11-01 03:27:51 25 4
gpt4 key购买 nike

我正在使用 Java 6、jsf 1.2、tomcat 上的 spring,如果我在某个页面超时后执行操作,则会出现以下异常。

我的问题是为什么页面没有被重定向到我的错误页面/error/error.jsf?

这是 web.xml(我没有过滤器):

<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/error/error.jsf</location>
</error-page>
<error-page>
<exception-type>java.lang.IllegalStateException</exception-type>
<location>/error/error.jsf</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error/error.jsf</location>
</error-page>
<error-page>
<exception-type>org.springframework.beans.factory.BeanCreationException</exception-type>
<location>/error/error.jsf</location>
</error-page>

这是我页面上的错误信息:

   An Error Occurred:    Error creating bean with name 'melaketViewHandler' defined in ServletContext resource [/WEB-INF/JSFViewHandlersContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.ewave.meuhedet.view.melaketViewHandlers.MelaketViewHandler]: Constructor threw exception; nested exception is java.lang.NullPointerException        - Stack Trace        org.springframework.beans.factory.BeanCreationException: Error creating bean     with name 'melaketViewHandler' defined in ServletContext resource     [/WEB-INF/JSFViewHandlersContext.xml]: Instantiation of bean failed; nested     exception is org.springframework.beans.BeanInstantiationException: Could not     instantiate bean class [com.ewave.meuhedet.view.melaketViewHandlers.MelaketViewHandler]:     Constructor threw exception; nested exception is java.lang.NullPointerException      at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:254) ...

最佳答案

我们使用自定义 View 处理程序来捕获异常并重定向到错误页面:

public class ExceptionHandlingFaceletViewHandler extends FaceletViewHandler { 
...

protected void handleRenderException( FacesContext context, Exception exception ) throws IOException, ELException, FacesException {
try {
if( context.getViewRoot().getViewId().matches( ".*/error.jsf" ) ) {
/*
* This is to protect from infinite redirects if the error page itself is updated in the
* future and has an error
*/
LOG.fatal("Redirected back to ourselves, there must be a problem with the error.xhtml page", exception );
return;
}

String contextPath = FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath();
getHttpResponseObject().sendRedirect( contextPath + "/error" );
}
catch( IOException ioe ) {
LOG.fatal( "Could not process redirect to handle application error", ioe );
}
}

private HttpServletResponse getHttpResponseObject() {
return (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
}
}

关于java - 为什么屏幕上显示的是异常而不是错误页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8643500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com