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のパターンと一緒って事で。

大丈夫、だよね・・・・。