java - 异常解析器和调度器不转发

标签 java tomcat spring-mvc

我设置了一个 ID 为“exceptionResolver”的 bean,使其成为 org.springframework.web.servlet.handler.SimpleMappingExceptionResolver 的一个实例。然后我定义了两个属性,“defaultErrorView”和“exceptionMappings”。

据我所知,这应该会捕获我的 Web 应用程序中抛出的任何异常,并转发到我指定的 View 。

这并没有发生,我得到的只是带有堆栈跟踪的标准 tomcat 500 错误页面。我究竟做错了什么?此外,我使用的是 spring 2.5.5,我所有的 Controller /dao/etc...都是使用 spring 注释定义的。

这是从我的堆栈跟踪中吐出来的。

[org.springframework.orm.hibernate3.SessionFactoryUtils] - <Closing Hibernate Session>
[org.hibernate.jdbc.ConnectionManager] - <releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]>
[org.hibernate.jdbc.ConnectionManager] - <transaction completed on session with on_close connection release mode; be sure to close the session to release JDBC resources!>
[org.springframework.web.servlet.handler.SimpleMappingExceptionResolver] - <Resolving exception from handler [controller.EditController@b512cb]: java.lang.NumberFormatException: null>
[org.springframework.web.servlet.handler.SimpleMappingExceptionResolver] - <Resolving to view 'errors/applicationErrorPg2' for exception of type [java.lang.NumberFormatException], based on exception mapping [java.lang.NumberFormatException]>
[org.springframework.web.servlet.handler.SimpleMappingExceptionResolver] - <Exposing Exception as model attribute 'exception'>
[org.springframework.web.servlet.DispatcherServlet] - <Handler execution resulted in exception - forwarding to resolved error view: ModelAndView: reference to view with name 'errors/applicationErrorPg2'; model is {exception=java.lang.NumberFormatException: null}>
java.lang.NumberFormatException: null
    at java.lang.Long.parseLong(Long.java:372)
    at java.lang.Long.parseLong(Long.java:461)
    at controller.EditController.createEditDto(EditController.java:169)
...
[org.springframework.web.servlet.DispatcherServlet] - <Rendering view [org.springframework.web.servlet.view.JstlView: name 'errors/applicationErrorPg2'; URL [/WEB-INF/jsps/errors/applicationErrorPg2.jsp]] in DispatcherServlet with name 'apps'>
[org.springframework.web.servlet.view.JstlView] - <Rendering view with name 'errors/applicationErrorPg2' with model {exception=java.lang.NumberFormatException: null} and static attributes {}>
[org.springframework.web.servlet.view.JstlView] - <Added model object 'exception' of type [java.lang.NumberFormatException] to request in view with name 'errors/applicationErrorPg2'>
[org.springframework.web.servlet.view.JstlView] - <Forwarding to resource [/WEB-INF/jsps/errors/applicationErrorPg2.jsp] in InternalResourceView 'errors/applicationErrorPg2'>
[org.springframework.web.servlet.DispatcherServlet] - <Cleared thread-bound request context: org.springframework.security.wrapper.SavedRequestAwareWrapper@4814f9>
[org.springframework.web.servlet.DispatcherServlet] - <Successfully completed request>
[org.springframework.web.context.support.XmlWebApplicationContext] - <Publishing event in context [org.springframework.web.context.support.XmlWebApplicationContext@53d4bf]: ServletRequestHandledEvent: url=[/app/edit.do]; client=[127.0.0.1]; method=[GET]; servlet=[apps]; session=[A459510CAB03A4868344995A602CFF27]; user=[UPDATE]; time=[94ms]; status=[OK]>
[org.springframework.web.context.support.XmlWebApplicationContext] - <Publishing event in context [org.springframework.web.context.support.XmlWebApplicationContext@12489c0]: ServletRequestHandledEvent: url=[/app/edit.do]; client=[127.0.0.1]; method=[GET]; servlet=[apps]; session=[A459510CAB03A4868344995A602CFF27]; user=[UPDATE]; time=[94ms]; status=[OK]>
[org.springframework.security.ui.ExceptionTranslationFilter] - <Chain processed normally>
[org.springframework.security.context.HttpSessionContextIntegrationFilter] - <SecurityContextHolder now cleared, as request processing completed>

最佳答案

由于 2.5.5 版本中的问题,Spring 异常解析器无法在 tomcat 中呈现异常 View 。有关详细信息,请参阅以下票证。

http://jira.springframework.org/browse/SPR-4973

关于java - 异常解析器和调度器不转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1498904/

相关文章:

java - 当 Apache 已经可以拥有 JVM 时,为什么还要发明 Tomcat

java - 如何使用 WEB-INF 目录之外的属性文件?

java - Switch Case 语句或其替代 If Condition 在 android 中不起作用

java - 更改单词顺序 Java

java - 使用 servlet 时的 Tomcat 404

java - EL 在 glassfish 上的部署问题

java - Spring MVC 和 Hibernate 无法获取当前线程的事务同步 session

spring-mvc - 如何为每个页面调用一个方法?

java - 为什么我每次都必须去 Eclipse 中运行配置?

java - 为什么这个 Java 代码在方法之外的大括号 ({}) 中?