モノワスレ

ブログに書いて忘れましょう

Struts2でエラーハンドリンクをしてみる

struts.xml
  1. /cause にリクエスト
  2. Exception発生
  3. errorHandler → resultType=chain で処理を errorProcessor に移譲する(本体はErrorHandlerAction)
<struts>
	<package>
		<global-results>
			<result name="errorHandler" type="chain">
				<param name="actionName">errorProcessor</param>
			</result>
		</global-results>
        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="errorHandler" />
        </global-exception-mappings>
        <action name="errorProcessor" class="test.Hoge">
            <result name="error">/WEB-INF/jsp/error.jsp</result>
        </action>
        <action name="throwExceptions" class="test.Cause">
            <result name="success">/WEB-INF/jsp/cause.jsp</result>
        </action>
        <action name="errorProcessor" class="test.action.ErrorHandlerAction" />
	</package>
</struts>
Cause.java

Runtimeを発生させてみる

package test;

import com.opensymphony.xwork2.ActionSupport;

public class Cause extends ActionSupport {
    @Override
    public String execute() throws Exception{
        throw new RuntimeException("Exception!!!");
    }
}
ErrorHandlerAction.java

ActionSupport を継承したクラスにする


課題

普通のHTMLレスポンスの場合と、JSONレスポンスの場合でエラーの返し方が違うのでどうしたら綺麗かな。。と。