[cubby-user:47] Re: Actionメソッド内でActionメソッドを呼び出した場合、initializeメソッドが2度実行される
BABA,Yasuyuki
[E-MAIL ADDRESS DELETED]
2008年 4月 19日 (土) 02:20:07 JST
馬場です。
アクションメソッドの呼び出し毎に initialize() メソッドが呼び出されるのは
想定した動作です。メソッドにインターセプタを適用することによって
initialize() メソッドの呼び出しやバリデーション等を行っているため、その
ような動作になっております。
ご提示いただいたケースだと、共通の処理を行う private メソッドを作成し
て、hoge() と index() から呼び出すことで回避できないでしょうか?
@Path("hoge")
public ActionResult hoge() {
// 省略
return forwardToIndex();
}
@Path("")
public ActionResult index() {
// 省略
return forwardToIndex();
}
private ActionResult forwardToIndex() {
return new Forward("index.jsp");
}
これならば、インターセプタが実行されないので initialize() メソッドが複数
回実行されることはありません。
ご検討をお願いします。
Hirokazu Tanaka さんは書きました:
> お世話になります。田中です。
>
> Actionクラスのinitializeメソッドを使用して、
> プロパティの初期化やログイン判定処理などをしようと考えてます。
> 下記のコードのように、Actionメソッドの中でActionメソッド
> を呼び出した場合、hoge()メソッド呼び出し前と、
> index()メソッド呼び出し前に、合計2回、initialize()メソッドが
> 実行されてしまいます。
> Actionクラスが生成されたときに1回だけ、initialize()メソッドが
> 実行されるように変更することは可能でしょうか?
>
>
> public class HogeAction extends Action {
> public List<String> hogeList;
>
> @Override
> public void initialize() {
> hogeList = new ArrayList<String>();
> hogeList.add("hoge1");
> hogeList.add("hoge2");
> hogeList.add("hoge3");
>
> // ログイン判定処理など
> // 省略
> }
>
>
> @Path("hoge")
> public ActionResult hoge() {
> // 省略
> return index();
> }
>
> @Path("")
> public ActionResult index() {
> // 省略
> return new Forward("index.jsp");
> }
> }
>
>
> 以上になりますが、よろしくお願いします。
>
> --
> Hirokazu Tanaka
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> cubby-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/cubby-user
--
BABA,Yasuyuki
[E-MAIL ADDRESS DELETED]
--------------------------------------
GANBARE! NIPPON! Win your ticket to Olympic Games 2008.
http://pr.mail.yahoo.co.jp/ganbare-nippon/
cubby-user メーリングリストの案内