Страница глобальных исключений в Apache Tiles и Spring MVC

Когда возникает необработанное исключение (например, 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...


person Prospolon    schedule 28.05.2013    source источник


Ответы (2)


Предполагая, что у вас настроены Spring TilesViewResolver и TilesConfigurer, вы можете попробовать следующее определение компонента:

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

А затем просто определите логическое представление error:

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

Это перенаправит любой Throwable в правильное представление, где у вас есть доступ к самому исключению (${exception}). Это не заменяет все стандартные страницы ошибок HTTP (для 404 и т. д.).

person emesx    schedule 28.05.2013

Если вы используете struts 2.0, то в struts.xml вы можете использовать следующее. Или, если вы используете сервлет jsp, вы можете использовать следующее в web.xml

<global-results>
<result name="error">/WEB-INF/jsp/common.jsp</result>
</global-results>
person Suyog Choure    schedule 28.05.2013