- PR -

super.execute( )の意味

投稿者投稿内容
apo
常連さん
会議室デビュー日: 2008/11/10
投稿数: 27
投稿日時: 2008-11-10 12:49
初歩的な質問ですみません。
今strutsのシステムで、開発をしています。
画面処理から、サーバーのActionクラスに遷移して
Actionクラス内で、execute( )処理の中で
画面からのボタンのパラメータを判定して、あるボタンの場合
super.execute( );
という処理がありますが、これは何をしているのでしょうか。
これだけの説明で回答がいただけるのか自身がありませんが、
ご説明のほうよろしくお願いします。

ソースのサンプル
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws APIS_Exception {

ActionForward objResult = null;
//---途中、他の処理があります
// いろんな処理を通る
//-------------------------------

if (request.getParameter("action") != null) {
objResult = super.execute(mapping, form, request, response);
}

return objResult;

}

[ メッセージ編集済み 編集者: apo 編集日時 2008-11-10 12:56 ]
deanna
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 118
投稿日時: 2008-11-10 12:54
そのままじゃないですか。
superクラスのexecuteメソッド実行では。
apo
常連さん
会議室デビュー日: 2008/11/10
投稿数: 27
投稿日時: 2008-11-10 12:59
superクラスのexecuteメソッドを実行した場合、処理の内容はどういうことをするのでしょうか。すみません、まだ初心者なのでできましたら、その辺のことをわかりやすくご説明お願いします。

そのまま親のクラスさんに○投げして、はい遷移先のオブジェクトが戻りましたよ・・・というのがどうもよくわかりません。

[ メッセージ編集済み 編集者: apo 編集日時 2008-11-10 13:38 ]
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2008-11-10 13:42
引用:

apoさんの書き込み (2008-11-10 12:59) より:
superクラスのexecuteメソッドを実行した場合、処理の内容はどういうことをするのでしょうか。すみません、まだ初心者なのでできましたら、その辺のことをわかりやすくご説明お願いします。

そのまま親のクラスさんに○投げして、はい遷移先のオブジェクトが戻りましたよ・・・というのがどうもよくわかりません。

[ メッセージ編集済み 編集者: apo 編集日時 2008-11-10 13:38 ]


何が分からないのかがわからないのですが、ひょっとして、オブジェクト指向というのを理解していないのでは?

# もし、「いきなりstrutsをいじる」事になってしまったのだとしたら、まずは「Java入門」の本なり記事なりを読みまくるべし。
やんち
常連さん
会議室デビュー日: 2008/10/24
投稿数: 32
投稿日時: 2008-11-10 14:18
super.execute()が親クラスのメソッドを呼び出しているのがわかっているみたいなので、
親クラスのexecute()メソッドの説明を調べてみては、いかがですか。
apo
常連さん
会議室デビュー日: 2008/11/10
投稿数: 27
投稿日時: 2008-11-10 14:35
引用:

やんちさんの書き込み (2008-11-10 14:18) より:
super.execute()が親クラスのメソッドを呼び出しているのがわかっているみたいなので、
親クラスのexecute()メソッドの説明を調べてみては、いかがですか。




↑↑
このソース(クラス)は、LookupDispatchActionクラスを継承していますので、LookupDispatchActionクラスのexecuteメソッドがどんな処理をしているかを調べているところですが、なかなか、それが掲載してあるところが見つかりません。もし何かヒントでもいいので教えていただけたらうれしいです。

あと、単純な質問ですが、どういうときに、親クラスのexecuteメソッドを実行させるケースがあるのでしょうか・・・?
というのも、複数あるsubmitボタンの処理の分岐は、子側で記述しているので、親クラスのexecuteを実行してもエラーになるように思うのですが。

私がもし間違っているのでしたら、その勘違いも詳しく指摘していただき、説明してもらえると助かります。初心者なのでどうもすみません。

[ メッセージ編集済み 編集者: apo 編集日時 2008-11-10 14:37 ]
やんち
常連さん
会議室デビュー日: 2008/10/24
投稿数: 32
投稿日時: 2008-11-10 15:08
LookupDispatchActionの説明なら、これじゃないかな。
http://struts.apache.org/1.3.8/apidocs/org/apache/struts/actions/LookupDispatchAction.html

基本の動きは、ユーザから、実行されたsubmitボタンがどれかに応じて、呼び出すactionを
切り替える。という感じみたいですよ。

LookupDispatchAction#execute()の設定は、struts-config.xmlにあると予想します。
struts-config.xmlに遷移先のアクションが記述されてるのでは、ないでしょうか。
apo
常連さん
会議室デビュー日: 2008/11/10
投稿数: 27
投稿日時: 2008-11-10 15:38
引用:

やんちさんの書き込み (2008-11-10 15:08) より:
LookupDispatchActionの説明なら、これじゃないかな。
http://struts.apache.org/1.3.8/apidocs/org/apache/struts/actions/LookupDispatchAction.html


こちらの説明読みました。ですが、ソース自体が見れないので、実際にどのように処理されるかがわからないです。ここで?が頭の中を交錯します。

引用:

基本の動きは、ユーザから、実行されたsubmitボタンがどれかに応じて、呼び出すactionを切り替える。という感じみたいですよ。


そこは、理解しておるのですが。
普通は、子側のクラスで、LookupDispatchActionクラスを継承して
子側の「getKeyMethodMap」という関数内でsubmitボタンと、実行する関数名の
設定を行うらしいですね。

↓↓↓ 例です
public class test extends LookupDispatchAction
{
protected Map getKeyMethodMap() {
Map map = new HashMap();
map.put("button.decision", "decision");
map.put("button.cancel", "cancel");
map.put("button.setup", "setup");
map.put("button.csv", "csv");
return map;
}
          :
:
例終わり

だから、普通は、子側でそれぞれのsubmitボタン実行時の関数の中で
例えば、button.cancel(↑)が押されたら、getKeyMethodMap関数の中で
定義した"cancel"メソッド(↑)が実行されて、子側の"cancel"メソッドの中で
findFoward("XXX");
で、遷移先を取得すればいいと思うのですが、

例2)↓↓
public ActionForward cancel(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws APIS_Exception {

// キャンセルボタンが押下されました
// いろいろ処理したあとに・・・

return mapping.findForward("cancel"); --> (1)
}

それが、(1)のところで、代わりに
retA = super.execute(....);
return retA;

と、スーパークラスのexecuteさんを呼んで何をするのかな・・・?

と思うのです。

[ メッセージ編集済み 編集者: apo 編集日時 2008-11-10 15:39 ]

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