struts-config.xmlのglobal-exceptionsで定義した例外処理
2007/07/23
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); } }
今日はこれで何時間無駄にしただろう。。。