3

未処理の例外がスローされた場合 (例: a 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ます...

4

3 に答える 3

8

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>

そして、単純に論理ビューを定義しますerror:

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

Throwableこれにより、例外自体にアクセスできる右側のビューにすべてが転送されます ( ${exception})。これは、すべての標準 HTTP エラー ページを置き換えるわけではありません (404 など)。

于 2013-05-28T19:14:38.460 に答える
1
<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="common11" template="/WEB-INF/jsp/common11.jsp">//common11 is same page as common.jsp
        <put-attribute name="header" value=""/>
        <put-attribute name="footer" value=""/>
    </definition>
   ...
   <definition name="main" extends="common">
       <put-attribute name="body" value="/WEB-INF/jsp/main.jsp"/>
       <put-attribute name="header" value=""/>
        <put-attribute name="footer" value=""/>
   </definition>
</tiles-definitions>
于 2013-05-28T13:10:17.713 に答える
0

struts 2.0 を使用している場合, struts.xml で, 次のように使用できます. または, jsp サーブレットを使用している場合, web.xml で次のように使用できます.

<global-results>
<result name="error">/WEB-INF/jsp/common.jsp</result>
</global-results>
于 2013-05-28T13:14:13.463 に答える