org.apache.struts.actions
クラス DispatchAction

java.lang.Object
  拡張org.apache.struts.action.Action
      拡張org.apache.struts.actions.DispatchAction
直系の既知のサブクラス:
LookupDispatchAction, MappingDispatchAction

public abstract class DispatchAction
extends Action

対応する ActionMapping の parameter プロパティに設定されたされた名前のリクエストパラメータに対応するパブリックメソッドへ処理を割り振る機能を持つ抽象 Action です。 この Action は、アプリケーションの設計を単純化するために、いくつものの類似したアクションを単一の Action クラスに結合したい場合に有用です。

このアクションを使用する場合には、以下のようなエントリを struts-config.xml ファイルに記述します:

<action path="/saveSubscription" type="org.apache.struts.actions.DispatchAction" name="subscriptionForm" scope="request" input="/subscription.jsp" parameter="method"/>

このエントリでは "method" という名前のリクエストパラメータの値を該当する"実行"メソッド(通常の Action.execute メソッドと同様の引数と返り値を持つメソッド)を選択するために使用します。 例えば以下のような3つのメソッドを同一のアクション内に持つことができます:

また、以下のような URL でこの中の1つのメソッドを呼び出すことができます。

http://localhost:8080/myapp/saveSubscription.do?method=update

- 呼び出されるメソッド以外のこのアクションに設定された属性は共有されます。 これはひとつの DispatchAction サブクラスに容易にまとめることのできる処理に関してある種の制約となります。

- 該当するリクエストパラメータの値が空だった場合 unspecified という名前のメソッドが呼び出されます。 デフォルトの状態では例外が発生します。 リクエストがキャンセルされた(html:cancel ボタンが押された)場合には、 カスタマイズ用途で準備されている cancelled メソッドが代わりに利用されます。 また、getMethodName メソッドをオーバーライドすることによって アクションがデフォルトで選択するハンドラを変更することができます。

バージョン:
$Revision: 1.4 $ $Date: 2005/01/12 07:13:51 $
翻訳者:
日置 聡
校正者:

フィールドの概要
protected  java.lang.Class clazz
          この DispatchAction クラスの Class インスタンス。
protected static org.apache.commons.logging.Log log
          Commons Logging インスタンス。
protected static MessageResources messages
          このパッケージのメッセージリソース。
protected  java.util.HashMap methods
          メソッド名をキーとした、このクラス自身の処理を呼ぶための Method オブジェクトのセット。
protected  java.lang.Class[] types
          リフレクションにてメソッドを検索する際に使用される引数の型のセット。
 
クラス org.apache.struts.action.Action から継承したフィールド
defaultLocale, servlet
 
コンストラクタの概要
DispatchAction()
           
 
メソッドの概要
protected  ActionForward cancelled(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          キャンセルボタンを押した場合のリクエストの際に選択されるメソッドです。
protected  ActionForward dispatchMethod(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String name)
          指定されたメソッドに処理を割り振ります。
 ActionForward execute(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          指定されたHTTP リクエストを処理し、対応する HTTP レスポンスを返します(または HTTP レスポンスを生成する他の Web コンポーネントに対して転送を行います)。
protected  java.lang.reflect.Method getMethod(java.lang.String name)
          指定された名前を持つ、execute メソッドと同じ引数、返り値をもつこのクラス内のメソッドを取得します。
protected  java.lang.String getMethodName(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String parameter)
          与えられたパラメータを用いて、メソッド名を返します。
protected  ActionForward unspecified(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          指定されたリクエストパラメータの値が設定されていなかった場合に選択されるメソッドです。
 
クラス org.apache.struts.action.Action から継承したメソッド
addErrors, addMessages, execute, generateToken, getDataSource, getDataSource, getErrors, getLocale, getMessages, getResources, getResources, getServlet, isCancelled, isTokenValid, isTokenValid, resetToken, saveErrors, saveErrors, saveMessages, saveMessages, saveToken, setLocale, setServlet
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

clazz

protected java.lang.Class clazz
この DispatchAction クラスの Class インスタンス。


log

protected static org.apache.commons.logging.Log log
Commons Logging インスタンス。


messages

protected static MessageResources messages
このパッケージのメッセージリソース。


methods

protected java.util.HashMap methods
メソッド名をキーとした、このクラス自身の処理を呼ぶための Method オブジェクトのセット。 このコレクションは異なるメソッドが呼ばれる際に生成されるため、Method オブジェクトの生成はメソッド名毎に1度だけ行われます。


types

protected java.lang.Class[] types
リフレクションにてメソッドを検索する際に使用される引数の型のセット。 このメンバがメソッドの検索の際には常に使用されるため、引数の型の処理は1回ですみます。

コンストラクタの詳細

DispatchAction

public DispatchAction()
メソッドの詳細

execute

public ActionForward execute(ActionMapping mapping,
                             ActionForm form,
                             javax.servlet.http.HttpServletRequest request,
                             javax.servlet.http.HttpServletResponse response)
                      throws java.lang.Exception
指定されたHTTP リクエストを処理し、対応する HTTP レスポンスを返します(または HTTP レスポンスを生成する他の Web コンポーネントに対して転送を行います)。 処理をどこにどうやって転送すべきかが記述された ActionForward インスタンスまたは、レスポンスが既に完了している場合には null を返します。

オーバーライド:
クラス Action 内の execute
パラメータ:
mapping - このインスタンスを選択する際に使用された ActionMapping
form - このリクエストに対応する ActionForm(もしあれば)
request - 処理中のHTTPリクエスト
response - 生成中のHTTPレスポンス
例外:
java.lang.Exception - 例外が発生した場合

unspecified

protected ActionForward unspecified(ActionMapping mapping,
                                    ActionForm form,
                                    javax.servlet.http.HttpServletRequest request,
                                    javax.servlet.http.HttpServletResponse response)
                             throws java.lang.Exception
指定されたリクエストパラメータの値が設定されていなかった場合に選択されるメソッドです。 DispatchAction のサブクラスで ServletException を投げる以外の振る舞いをさせたい場合にはこのメソッドをオーバライドしてください。

例外:
java.lang.Exception

cancelled

protected ActionForward cancelled(ActionMapping mapping,
                                  ActionForm form,
                                  javax.servlet.http.HttpServletRequest request,
                                  javax.servlet.http.HttpServletResponse response)
                           throws java.lang.Exception
キャンセルボタンを押した場合のリクエストの際に選択されるメソッドです。 DispatchAction のサブクラスで null を返す以外の振る舞いをさせたい場合にはこのメソッドをオーバライドしてください。

例外:
java.lang.Exception
導入されたバージョン:
Struts 1.2.0

dispatchMethod

protected ActionForward dispatchMethod(ActionMapping mapping,
                                       ActionForm form,
                                       javax.servlet.http.HttpServletRequest request,
                                       javax.servlet.http.HttpServletResponse response,
                                       java.lang.String name)
                                throws java.lang.Exception
指定されたメソッドに処理を割り振ります。

例外:
java.lang.Exception
導入されたバージョン:
Struts 1.1

getMethod

protected java.lang.reflect.Method getMethod(java.lang.String name)
                                      throws java.lang.NoSuchMethodException
指定された名前を持つ、execute メソッドと同じ引数、返り値をもつこのクラス内のメソッドを取得します。

パラメータ:
name - このクラス内のメソッド名
例外:
java.lang.NoSuchMethodException - 指定されたメソッドが存在しない場合

getMethodName

protected java.lang.String getMethodName(ActionMapping mapping,
                                         ActionForm form,
                                         javax.servlet.http.HttpServletRequest request,
                                         javax.servlet.http.HttpServletResponse response,
                                         java.lang.String parameter)
                                  throws java.lang.Exception
与えられたパラメータを用いて、メソッド名を返します。

パラメータ:
mapping - このインスタンスを選択する際に使用された ActionMapping
form - このリクエストに対応する ActionForm(もしあれば)
request - 処理中のHTTPリクエスト
response - 生成中のHTTPレスポンス
parameter - ActionMapping 内のパラメーターの名前
戻り値:
メソッド名
例外:
java.lang.Exception
導入されたバージョン:
Struts 1.2.0


このドキュメントは、Ja-Jakartaにより訳されました。コメントがある場合は、report@jajakarta.orgまでお願いします。
Copyright (C) 2000-2004 - Apache Software Foundation