java - Apache Tiles 和 Spring MVC 中的全局异常页面

标签 java spring spring-mvc apache-tiles

当抛出未处理的异常(例如 RuntimeException)时,我想显示一个常见的错误页面。

我想实现一些目标:

  • 重用 HTML 模板(使用带有标题等的通用“框架”)并将异常信息放在正文中
  • 在正文文档中提供有关异常的一些基本信息

我正在使用 Apache Tiles 和 Spring MVC。什么是解决我的问题的好方法?

我的部分瓷砖定义:

<tiles-definitions>
    <definition name="common" template="/WEB-INF/jsp/common.jsp">
        <put-attribute name="header" value="header"/>
        <put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp"/>
    </definition>
   ...
   <definition name="main" extends="common">
       <put-attribute name="body" value="/WEB-INF/jsp/main.jsp"/>
   </definition>
</tiles-definitions>

理想情况下,我想通过设置 body 属性来指定异常页面的定义...

最佳答案

假设你已经配置了 Spring 的 TilesViewResolverTilesConfigurer,你可以试试下面的 bean 定义:

<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
   <property name="exceptionMappings">
      <props>
         <prop key="java.lang.Throwable">error</prop>
      </props>
   </property>
</bean>

然后简单定义逻辑 View error:

<definition name="error" extends="common">
    <put-attribute name="body" value="/WEB-INF/jsp/error.jsp"/>
</definition>

这会将任何 Throwable 转发到正确的 View ,您可以在其中访问异常本身 (${exception})。这不会替换所有标准 HTTP 错误页面(对于 404 等)

关于java - Apache Tiles 和 Spring MVC 中的全局异常页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16792830/

相关文章:

java - java中sum方法的使用方法

java - 在没有 persistence.xml 或 orm.xml 的情况下使用 IntelliJ 生成 JPA 实体

java - 添加自定义过滤器 Apache Shiro + Spring Boot

java - Spring 4 MVC 和 Websockets - 没有合适的默认 RequestUpgradeStrategy

java - 我工作场所的代理阻止我使用 Maven

java - 如何比较方法中的两个实例变量?

java - 图像不会显示在 JavaFX 中

java - 如何获取通过 Hibernate 连接的数据库名称?

java - Spring Oauth2 中 oauth/token 的 CORS

java - Spring : Error setting property values; nested exception is org. springframework.beans.NotWritablePropertyException