Strutsリファレンス(逆引き)

Strutsリファレンス
 
Web struts.wasureppoi.com
フォーム内の複数のボタンからsubmitする(LookupDispatchAction)
スポンサード リンク

フォーム内の複数ボタンからsubmit処理を実行する場合、それぞれの処理の振り分ける方法として
DispatchActionクラスを使用する振り分け方法があります。

アクションクラスは、org.apache.struts.actions.DispatchActionを拡張します。
アクションマッピングには、submitボタンのパラメータ名をparameter属性で指定します。
アクションクラスで実行されるメソッド名は、submitボタンのパラメータに指定される値になります。

JSPのフォーム

<%@ page pageEncoding = "Shift_JIS" %>
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>

<html><body>
<B>入力画面</B><BR><BR>

<html:form action="/lookup_dispatch_view" method="post">

<html:submit property="dispatch">
  <bean:message key="button.dispatchA"/>
</html:submit>

<html:submit property="dispatch">
  <bean:message key="button.dispatchB"/>
</html:submit>

</html:form>

</body></html>

フォーム内に2つのボタンを作成します。
<html:submit>の属性「property」に"dispatch"を指定します。
<html:submit>タグのボタン表示名に、メッセージリソースのメッセージkey「button.dispatchA」、「button.dispatchB」を指定。


メッセージリソースファイル(appincation.ptoperties)

button.dispatchA = ディスパッチA
button.dispatchB = ディスパッチB


JSPの<html:submit>タグで指定したボタン表示名のメッセージkeyを定義します。


スポンサード リンク


アクションマッピング

<action-mappings>
   <action path="/lookup_dispatch_view"
        type="sample.ac.LookupDispatchCheckAction"
        name="DispatchForm"
        scope="session"
        parameter="dispatch">
        <forward
          name="successA"
          path="/jsp/ac/lookup_dispatch_view1.jsp" />
        <forward
          name="successB"
          path="/jsp/ac/lookup_dispatch_view2.jsp" />
   </action>
</action-mappings>

アクションマッピングの属性「parameter」に、submitボタンのパラメータ名"dispatch"を指定


アクションクラス

package sample.ac;

import javax.servlet.http.*;
import java.util.*;
import org.apache.struts.action.*;
import org.apache.struts.actions.LookupDispatchAction;

public class LookupDispatchCheckAction extends LookupDispatchAction {

   protected Map getKeyMethodMap() {
    // キーとメソッドの対応を登録する
    Map<String,String> map = new HashMap<String,String>();
    map.put("button.dispatchA","lookupDispatchTestA");
    map.put("button.dispatchB","lookupDispatchTestB");
    return map;
  }

  public ActionForward lookupDispatchTestA(ActionMapping mapping,
                             ActionForm form,
                             HttpServletRequest request,
                             HttpServletResponse response) {

     System.out.println("lookupDispatchTestA 実行!!");

    return mapping.findForward("successA");
  }

  public ActionForward lookupDispatchTestB(ActionMapping mapping,
                             ActionForm form,
                             HttpServletRequest request,
                             HttpServletResponse response) {

     System.out.println("lookupDispatchTestB 実行!!");

     return mapping.findForward("successB");
  }
}

getKeyMethodMapメソッドに、JSPの<html:submit>で指定したメッセージリソースのメッセージkeyとメソッド名のマップを定義します。
submitボタンのリクエストパラメータ「dispatch」に「ディスパッチA」が指定された場合は、メソッドdispatchTestAを実行
submitボタンのリクエストパラメータ「dispatch」に「ディスパッチB」が指定された場合は、メソッドdispatchTestBを実行

スポンサード リンク

アクションの種類
アクション(Action)
フォーム内の複数のボタンからsubmitする(DispatchAction)
フォーム内の複数のボタンからsubmitする(LookupDispatchAction)
複数のメソッドを1つのアクションクラスにまとめる(MappingDispatchAction)
既存のサーブレットをStrutsに組み込む(IncludeAction)
リクエストを転送する(ForwardAction)
リクエストを転送する(Forward属性)
アクションをチェーンさせる
異なるモジュールのアクションを呼び出す(SwitchAction)
デフォルトアクションを定義する(unknown属性)
画面遷移を制御する(TransactionToken)
指定したパラメータをアクションに渡す(parameter)
動的なリクエストパラメータを指定してリダイレクトする(RedirectingActionForward)
共通の遷移先を定義する(global-forward)
SSLで通信する(org.apache.struts.action.SecurePlugIn)
エラーメッセージを保存する(saveErrors())
メッセージを保存する(saveMessages())
ユーザー作成オブジェクトをJSPに受け渡す(request)
アクション間でユーザー作成オブジェクトを受け渡す(session)

アクションへ
忘れっぽいエンジニアのJakarta Strutsリファレンス TOPへ