- PR -

strutsのActionクラスのソースに関して

1
投稿者投稿内容
goyatan
会議室デビュー日: 2003/04/02
投稿数: 6
投稿日時: 2003-11-18 13:12
こんちには。
strutsのActionクラスのソースで疑問に思うことがあるのですが・・・

Actionクラスのソースを見てみると、以下のようなメソッドがありますが、
executeメソッドから呼ばれるperformメソッドって必要なのですか?
実装する時は、Actionクラスを継承したクラスでexecuteメソッドをオーバライドしますし、その時って継承したクラスのreturn値が直接ActionServletに返るんですよね!?
performメソッドがはしる時ってあるのでしょうか?

また、下のexecuteメソッドの中の
return perform(mapping, form, request, response)も
return null
ではダメなのでしょうか?

とんちんかんな事を言っていたら、すいません。
どなたか解る方がいましたら、教えてください。


public ActionForward execute(ActionMapping mapping,
               ActionForm form,
               HttpServletRequest request,
               HttpServletResponse response)throws Exception{
   return perform(mapping, form, request, response);
}

public ActionForward perform(ActionMapping mapping,
               ActionForm form,
               HttpServletRequest request,
               HttpServletResponse httpservletresponse)
               throws IOException, ServletException{
   return null;
}

Emacs信者
常連さん
会議室デビュー日: 2003/08/10
投稿数: 38
投稿日時: 2003-11-18 13:56
Action.performは、過去のバージョン(Struts1.0)との
互換性のために用意されているものです。
よって、Struts1.2(開発版)では削除されています。

通常のプログラムでは、Action.executeを使用すれば問題ありませんよ。

executeの実装がそのようになっているのは、
performだけをオーバーライドしている過去のActionクラスも動作できるようにするためです。

[ メッセージ編集済み 編集者: Emacs信者 編集日時 2003-11-18 14:12 ]
goyatan
会議室デビュー日: 2003/04/02
投稿数: 6
投稿日時: 2003-11-18 18:46
回答して頂きありがとうございます。
互換性のためだけに、残してあるメソッドなんですね!
気分的にすっきりしました。ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)