org.apache.struts.actions
クラス DispatchAction

java.lang.Object
  |
  +--org.apache.struts.action.Action
        |
        +--org.apache.struts.actions.DispatchAction

public abstract class DispatchAction
extends Action

抽象 Action クラスであり、対応する ActionMapping の parameter プロパティで指定された名前のリクエスト パラメータにより名づけられたパブリックメソッドへディスパッチします。 この Action は、アプリケーション設計を単純化するために、多数の類似した アクションを単一の Action クラスに結合することを好む開発者にとって有用です。

このアクションの使用を struts-config.xml ファイルで設定 するには、以下のようなエントリを追加します:

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

この定義では、 "method" と名づけられたリクエストパラメータの値を使用し、 適切な "perform" メソッドを選択します。これらのメソッドは、標準の Action.perform() メソッドの同じシグニチャ(メソッド名以外は)を持たなければなりません。 例えば、同じアクション中に以下の三つのメソッドを持つとしましょう:

そうすれば、メソッドの一つをこのようなURLで呼び出すことができます:

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

注意 - 上記以外のマッピング特性は全て、 さまざまなハンドラで共有されます。このことは、どのような ハンドラを同じ DispatchAction サブクラスにリーズナブルにまとめてもよいかについて、 ある種の制約を与えます。

バージョン:
$Revision: 1.2 $ $Date: 2001/03/29 18:41:52 $
作成者:
Niall Pemberton
, Craig R. McClanahan

フィールドの概要
protected  java.lang.Class clazz
          この DispatchAction クラスの Class インスタンス。
protected static MessageResources messages
          このパッケージのメッセージリソース。
protected  java.util.HashMap methods
          このクラスのためにイントロスペクトする、Method オブジェクトの集合で、 キーはメソッド名。
protected  java.lang.Class[] types
          リフレクトされたメソッド呼び出で使われる引数の型のクラスの集合。
 
クラス org.apache.struts.action.Action から継承したフィールド
DATA_SOURCE_KEY, defaultLocale, ERROR_KEY, EXCEPTION_KEY, FORM_BEANS_KEY, FORWARDS_KEY, LOCALE_KEY, MAPPING_KEY, MAPPINGS_KEY, MESSAGES_KEY, MULTIPART_KEY, servlet, SERVLET_KEY, TRANSACTION_TOKEN_KEY
 
コンストラクタの概要
DispatchAction()
           
 
メソッドの概要
protected  java.lang.reflect.Method getMethod(java.lang.String name)
          現在のクラスをイントロスペクトし、指定された名前で、perform() メソッドと同じパラメータタイプを受け入れるメソッドを見つけます。
 ActionForward perform(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          指定されたHTTPリクエストを処理して、 対応するHTTPレスポンスを生成します (またはレスポンスを生成する他のWebコンポーネントにリクエストをフォワードします)。
 
クラス org.apache.struts.action.Action から継承したメソッド
generateToken, getLocale, getResources, getServlet, isCancelled, isTokenValid, perform, perform, perform, resetToken, saveErrors, saveToken, setLocale, setServlet, toHex
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

clazz

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


messages

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


methods

protected java.util.HashMap methods
このクラスのためにイントロスペクトする、Method オブジェクトの集合で、 キーはメソッド名。 このコレクションは異なるメソッドが呼ばれる度に設定されるので、 イントロスペクションはメソッド名あたり1回しか起こりません。


types

protected java.lang.Class[] types
リフレクトされたメソッド呼び出で使われる引数の型のクラスの集合。 これらは(この集合の要素は)、全ての呼び出しで共通ですので、計算は一度しか行われません。

コンストラクタの詳細

DispatchAction

public DispatchAction()
メソッドの詳細

perform

public ActionForward perform(ActionMapping mapping,
                             ActionForm form,
                             javax.servlet.http.HttpServletRequest request,
                             javax.servlet.http.HttpServletResponse response)
                      throws java.io.IOException,
                             javax.servlet.ServletException
指定されたHTTPリクエストを処理して、 対応するHTTPレスポンスを生成します (またはレスポンスを生成する他のWebコンポーネントにリクエストをフォワードします)。 コントロールをどこにどうやってフォワードすべきかが記述された ActionForward インスタンスもしくは、 レスポンスが既に完成している場合は nullを返します。

オーバーライド:
クラス Action 内の perform
パラメータ:
mapping - このインスタンスを選択するのに使用される ActionMapping
request - 処理中の HTTP リクエスト
response - 作成中の HTTP レスポンス
例外:
java.io.IOException - 入出力エラーが起きた場合
javax.servlet.ServletException - サーブレット例外が起きた場合

getMethod

protected java.lang.reflect.Method getMethod(java.lang.String name)
                                      throws java.lang.NoSuchMethodException
現在のクラスをイントロスペクトし、指定された名前で、perform() メソッドと同じパラメータタイプを受け入れるメソッドを見つけます。

パラメータ:
name - イントロスペクトするメソッド名
例外:
java.lang.NoSuchMethodException - そのようなメソッドが見つからない場合


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