[Seasar-user:13083] Re: [SAStruts]@Execute のinput属性で遷移できないケースがある

出羽 健一 [E-MAIL ADDRESS DELETED]
2008年 2月 27日 (水) 18:33:22 JST


ひがさま

出羽です。

> -----Original Message-----
> > ちなみに、バリデーションエラーの有無を手軽に判定できる
> > ユーティリィティのようなものはFWとして提供されてあったりするのでしょう
> か。
> > ひとまずは、以下のような感じで自作したので問題ないのですが、
> > FW側で提供されているのであれば、ぜひ、そちらを使いたいです。
> >
> >     public static boolean isError() {
> >         HttpServletRequest request = RequestUtil.getRequest();
> >         Object errorMessage = request.getAttribute(Globals.ERROR_KEY);
> >         return errorMessage != null ? true : false;
> >     }
> >
> バリデーションエラーの有無を手軽に判定できるユーティリティは、
> 特に用意していません。
> Executeアノテーションで、saveErrors属性を
> SaveType.SESSOINにするとメッセージは、
> セッションに保存されるので、セッションも見るようにしていたほうが
> 無難だと思います。

なるほど。有難うございます。

以下のような感じで実装してみました。
(引数のなしのstaticメソッドだと、テストの時に困るので、
DIして使ってもらうHelperにしました。)

public class ActionHelperImpl implements ActionHelper {
    public boolean hasError() {
        HttpServletRequest request = RequestUtil.getRequest();
        HttpSession session = request.getSession();

        Object errorMessageFromRequest =
            request.getAttribute(Globals.ERROR_KEY);
        Object errorMessageFromSession =
            session.getAttribute(Globals.ERROR_KEY);

        return (errorMessageFromRequest == null 
            && errorMessageFromSession == null) ? false : true;
    }
}



Seasar-user メーリングリストの案内