Struts2をやってみる (8) - Exception Handling -

2013-09-21T00:00:00+00:00 Java Struts2

アクションから例外が発生した場合の振る舞いなコントロールなあれですね

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <constant name="struts.devMode" value="true" />

    <package name="sample" extends="struts-default" namespace="/sample">

        <!-- アクション毎にresult設定が必要ない場合にはこっちでオッケー
        <global-results>
            <result name="error">/WEB-INF/jsp/error.jsp</result>
        </global-results>
        -->

        <!-- グローバル(パッケージ毎?)に例外ハンドルを設定する場合
        <global-exception-mappings>
            <exception-mapping result="error" exception="java.lang.Exception" />
        </global-exception-mappings>
        -->

        <action name="index" class="sample.action.IndexAction" method="index">
            <!-- アクション単位で例外発生した場合には指定したresultに飛ぶ -->
            <exception-mapping exception="java.lang.Exception" result="error" />
            <result name="input">/WEB-INF/jsp/index.jsp</result>
            <result name="error">/WEB-INF/jsp/error.jsp</result>
        </action>
    </package>
</struts>

でこの機能の実体自体?はExceptionMappingInterceptorっていうのっぽい。これはstruts-default.xmlで定義されてそれを継承して使っている

あと作用するJSP等では

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
  <body>
    <h2>ERROR: ${exception.message}</h2>
  </body>
</html>

っていうように${exception}、exceptionStackも取得出来る模様

んまぁこんくらいかなと

Struts2をやってみる (9) - Preparable Interface - Struts2をやってみる (7) - フォームバリデーション (2) -