struts-config.xmlのglobal-exceptionsで定義した例外処理

struts1.2.8の話

RequestProcessorを継承したクラスでprocessActionPerformメソッドをオーバーライドして共通処理を書いておくということをしています。オーバーライドしたprocessActionPerformの中の共通処理で例外が発生した場合、struts-config.xmlで定義したglobal-exceptionsで定義した例外処理をしてくれません。struts-config.xmlのglobal-exceptionsで定義した例外処理は、actionクラスで発生した例外を処理するためのルールのようです。

なので下のように、例外が発生したら場合に自分でcatchしてprocessExceptionを呼出すようにしたら、意図通りにglobal-exceptionsで定義した例外処理を行なってくれるようでした。

public class MyRequestProcessor extends RequestProcessor {
protected ActionForward processActionPerform(HttpServletRequest request,
HttpServletResponse response, Action action, ActionForm form,
ActionMapping mapping) throws IOException, ServletException {
try {
//なんか共通処理
commonCheck();
} catch (Exception e) {
return processException(request, response, e, form, mapping);
}
return super.processActionPerform(request, response, action, form, mapping);
}
}

今日はこれで何時間無駄にしただろう。。。

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.