dov*_*mir 5 java jsf spring exception
我在 tomcat 上使用 Java 6、jsf 1.2、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>
Run Code Online (Sandbox Code Playgroud)
这是我页面上的错误消息:
发生错误:
创建名为 'melaketViewHandler' 的 bean 时出错
ServletContext 资源 [/WEB-INF/JSFViewHandlersContext.xml]:实例化
豆失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:
无法实例化 bean 类 [com.ewave.meuhedet.view.melaketViewHandlers.MelaketViewHandler]:构造函数抛出
例外; 嵌套异常是 java.lang.NullPointerException
- 堆栈跟踪
org.springframework.beans.factory.BeanCreationException:创建 bean 时出错
在 ServletContext 资源中定义了名称“melaketViewHandler”
[/WEB-INF/JSFViewHandlersContext.xml]:bean实例化失败;嵌套
异常是 org.springframework.beans.BeanInstantiationException: 无法
实例化 bean 类 [com.ewave.meuhedet.view.melaketViewHandlers.MelaketViewHandler]:
构造函数抛出异常;嵌套异常是 java.lang.NullPointerException
在 org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:254)
...
我们使用自定义视图处理程序来捕获异常并重定向到错误页面:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1076 次 |
| 最近记录: |