MVCモデルで知られているJSP&ServletのStrutsフレームワークですが、Contorollerの部分にあたるActionを作成しているときにちと困ったことになりました。
普通のサーブレットの場合、サーブレットの中でServletContextを呼び出すには、
ServletContext sc = getServletContext();
で良いわけですが、Strutsの場合は上記のような構文をexecuteメソッドの中に記述しても動きません。
せっかくStrutsのプラグインを用いてあるクラスをアプリケーションスコープに格納したのに取得できないなんてかなりorzな訳ですが。
ググってみたところ、上記のコードにもうひと味付けることで解決できました。
ServletContext sc = getServlet().getServletContext();
Foo bar = (Foo)sc.getAttribute("bar");
例えば、上記のコードのようにすれば、StrutsのActionサーブレットにおいてもApplicationスコープから値を取得できます。
めでたし。めでたし。
コメント