jp.terasoluna.fw.web.struts.actions
クラス DispatchAction

java.lang.Object
  上位を拡張 Action
      上位を拡張 jp.terasoluna.fw.web.struts.actions.ActionEx
          上位を拡張 jp.terasoluna.fw.web.struts.actions.DispatchAction

public class DispatchAction
extends ActionEx

フォワード先の振り分け処理を行う。

Strutsが提供しているDispatcherAction、 LookUpDispatchActionとは異なり、 リクエストパラメータの値を用いて、遷移先が決定される。
この機能で利用するリクエストパラメータキーは、下記の優先順位で決定される。

  1. eventプロパティで指定された値
  2. eventプロパティが指定されていない場合、 "event"を リクエストパラメータのキーとして取得できる値
下記に記した定義ファイルは リクエストパラメータのキーをcustom-eventに設定する例である。

Bean定義ファイルでeventプロパティにより、 遷移先に用いられるリクエストパラメータキーをcustom-eventに設定する

Bean定義ファイルの設定

  <bean name="/dispatch" scope="prototype"
    class="jp.terasoluna.fw.web.struts.actions.DispatchAction">
    <property name="event">
      <value>custom-event</value>
    </property>
  </bean>
  

struts-config.xmlの設定

  <action path="/dispatch"
    name="_sampleForm"
    scope="session"
    input="/prev.jsp">
    <forward name="regist" path="/userRegist.do"/>
    <forward name="search" path="/userSearch.do"/>
    <forward name="update" path="/userUpdate.do"/>    
    <forward name="default" path="/prev.do"/>
  </action>
 
ここで、eventパラメータが省略された場合、 リクエストパラメータのキーは"event"となる。

次に、上記で決定されたキーを用いてリクエストパラメータを検索し 値を取得する。その結果、以下の優先順位で遷移先文字列が決定される。

  1. 検索されたリクエストパラメータの値のうち、 先頭に"forward_"がついているもの
  2. 該当するリクエストパラメータの値が見つからない場合、 リクエストパラメータのキーそのものの先頭に "forward_"が付いているもの
  3. 上記ともに見つからない場合、遷移先は"default"になる
  4. また、event="XXXX"、"forward_XXXX"といった 存在し得ない不正な遷移先が指定された場合も、"default"を 遷移先とする。
上記の結果、先頭に"forward_"が 付いているものは、取り除かれた文字列が"#input" であったとき、struts-config.xmlのinput属性 (上記例では/logon.jsp)が遷移先となる。
"#input"ではないとき、先頭の "forward_"を取り除いた文字列が遷移先文字列となる。

JSPでの記述例

 ・・・
  <html:submit property="forward_regist" value=" 登録 " />
  <html:submit property="forward_search" value=" 再検索 " />
  <html:image  property="forward_update" src="./image/update.gif" />  
 ・・・
 
 (ここではリクエストパラメータの値にforward_... が存在しない場合)
画面上の「登録」ボタンが押下されたとき、次の遷移先はregist になり、「再検索」ボタンが押下されたとき、次の遷移先はsearch になり、更新画像ボタンが押下されたとき、次の遷移先はupdate になる。


フィールドの概要
private  java.lang.String event
          遷移先を表すプロパティ名。
private static java.lang.String FORWARD_DEFAULT
          リクエストパラメータに振り分け指示がなかった場合の、 デフォルトの遷移先の論理フォワード名。
private static java.lang.String FORWARD_PREFIX
          振り分け指示を識別するための、 リクエストパラメータのキーのプリフィックス。
private static Log log
          ログクラス。
 
クラス jp.terasoluna.fw.web.struts.actions.ActionEx から継承されたフィールド
FORWARD_TXTOKEN_ERROR
 
コンストラクタの概要
DispatchAction()
           
 
メソッドの概要
protected  ActionForward cancelled(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          リクエストにキャンセルフラグが設定されている場合の遷移先を 決定する。
protected  java.lang.String doDetermineForward(java.util.Map params, java.lang.String event)
          リクエストパラメータに基づいてフォワード先をディスパッチする。
 ActionForward doExecute(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
          フォワード先の振り分け処理を行う。
protected  boolean exists(java.util.Map params, java.lang.String name)
          リクエストパラメータに、nameで指定した名称のパラメータが 存在しているかを判定する。
 void setEvent(java.lang.String value)
          遷移先を表すプロパティ名を設定する。
 
クラス jp.terasoluna.fw.web.struts.actions.ActionEx から継承されたメソッド
addErrors, addMessages, execute, isSaveToken, isTokenCheck, processTokenCheck, setSaveToken, setTokenCheck
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

log

private static Log log
ログクラス。


FORWARD_DEFAULT

private static final java.lang.String FORWARD_DEFAULT
リクエストパラメータに振り分け指示がなかった場合の、 デフォルトの遷移先の論理フォワード名。

関連項目:
定数フィールド値

FORWARD_PREFIX

private static final java.lang.String FORWARD_PREFIX
振り分け指示を識別するための、 リクエストパラメータのキーのプリフィックス。

関連項目:
定数フィールド値

event

private java.lang.String event
遷移先を表すプロパティ名。

コンストラクタの詳細

DispatchAction

public DispatchAction()
メソッドの詳細

setEvent

public void setEvent(java.lang.String value)
遷移先を表すプロパティ名を設定する。

パラメータ:
value - 遷移先プロパティ名

doExecute

public ActionForward doExecute(ActionMapping mapping,
                               ActionForm form,
                               javax.servlet.http.HttpServletRequest req,
                               javax.servlet.http.HttpServletResponse res)
フォワード先の振り分け処理を行う。

フォワード先を振り分けた後、サーバ閉塞通過フラグを 削除する。
実際の遷移先は、doDetamineForward()が決定している。

定義:
クラス ActionEx 内の doExecute
パラメータ:
mapping - アクションマッピング
form - アクションフォーム
req - HTTPリクエスト
res - HTTPレスポンス
戻り値:
遷移先情報

doDetermineForward

protected java.lang.String doDetermineForward(java.util.Map params,
                                              java.lang.String event)
リクエストパラメータに基づいてフォワード先をディスパッチする。 paramsがnullの場合は、デフォルトの文字列を返却する。

パラメータ:
params - リクエストパラメータ(マップ形式)
event - アクションマッピングに指定されたイベント名
戻り値:
振り分け先の論理フォワード名

exists

protected boolean exists(java.util.Map params,
                         java.lang.String name)
リクエストパラメータに、nameで指定した名称のパラメータが 存在しているかを判定する。

パラメータ:
params - リクエストパラメータ(マップ形式)
name - リクエストパラメータ名
戻り値:
リクエストパラメータ名が存在しているならば true

cancelled

protected ActionForward cancelled(ActionMapping mapping,
                                  ActionForm form,
                                  javax.servlet.http.HttpServletRequest request,
                                  javax.servlet.http.HttpServletResponse response)
リクエストにキャンセルフラグが設定されている場合の遷移先を 決定する。注意点として、ActionForwardはnullとして返却されるため、 キャンセル時の遷移先は、 このクラスを継承したクラスのオーバライドメソッドで実装する必要がある。

パラメータ:
mapping - アクションマッピング
form - アクションフォーム
request - HTTPリクエスト
response - HTTPレスポンス
戻り値:
アクションフォワード