S2StrutsのPOJO Actionにおけるタイムアウト処理 その2

 よく考えたらPOJO Actionを利用した時は、ActionMappingを取得しなくても、global-forwardに定義したフォワード名を文字列として返せば良いだけでした。結局こんな感じでOKですね。

struts-config.xml


  

loginCheckInterceptor.java

public class LoginCheckInterceptor implements MethodInterceptor {

  public Object invoke(MethodInvocation invocation) throws Throwable {

    HttpServletRequest request = SingletonS2ContainerFactory.getContainer().getRequest();
    HttpSession session = request.getSession(false);

    if (session!=null && session.getAttribute(Globals.SESSION_KEY)!=null) {
        // ログイン済み
        return invocation.proceed();
    } else {
        // タイムアウト
        MessageManager.addGlobalError("errors.login.timeout");
        MessageManager.saveErrors();
        return "timeout";
    }
}