S2Strutsで元に帰るの続き
トラバを戴いたので(有難う御座居ます)、もうちょっと。Actionクラスにアスペクトかますinterceptorなんですが。
public class ActionThrowsInterceptor extends ThrowsInterceptor { private WebUtils webUtils; // 上に書いた戻る処理を外出ししたメソッドのあるクラス public void handleThrowable(AppRuntimeException ex, MethodInvocation invocation) throws Throwable { MessageManager.addGlobalError("errors.detail",ex.getMessage()); MessageManager.saveErrors(); webUtils.fowardToInputPage(); } (以下略)
なんて感じです。
AppRuntimeExceptionを継承してれば、InvalidPasswordExceptionだろうが、UserNotExistExceptionだろうが(名前がださいとか突っ込みは聞かなかった事に致します)、catchして元画面の
で、MessageManagerをこんなところで使っちゃっていいんだろうか、と不安が。
ソースを見たら。
public class MessageManager { (中略) public static void addGlobalError(String key, Object value0) { getMessageFacade().addGlobalError(key, value0); } (延々と略) private static MessageFacade getMessageFacade() { return (MessageFacade) SingletonS2ContainerFactory.getContainer().getComponent(MessageFacade.class); } }
ってなってまして、SingletonS2ContainerFactoryから都度コンテナを、そっからMessageFacadeを取得してるんで、大丈夫なんじゃないかと。ServiceLocatorのパターンと一緒って事で。
大丈夫、だよね・・・・。