Struts2をやってみる (8) - Exception Handling -
アクションから例外が発生した場合の振る舞いなコントロールなあれですね
<?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も取得出来る模様
んまぁこんくらいかなと