程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Struts1.x系列教程(19):LookupDispatchAction類處理一個form多個submit

Struts1.x系列教程(19):LookupDispatchAction類處理一個form多個submit

編輯:關於JAVA

有時在HTML form中需要提供多個提交按鈕,這時LookupDispatchAction類就派上用場了。LookupDispatchAction是DispatchAction的子類,用於處理客戶端代碼中有一個Form含有多個提交按鈕的情況。為了使用LookupDispatchAction,首先來編寫客戶端代碼,代碼如下:

<html:form action="myaction">
    ……
    <html:submit property="action">
        <bean:message key="submit.print" />
    </html:submit>
    <html:submit property="action">
        <bean:message key="submit.save" />
    </html:submit>
</html:form>

其中submit.print和submit.save是屬性文件中的key。action實際上是提交按鈕的name屬性值。在提交時,會將property和<bean:message key="..." />作為請求參數和參數值傳給Struts動作。如save按鈕被單擊時,請求URL為http://localhost:8080/.../myaction.do?action=save。其中save為submit.save在屬性文件中對應的屬性值,也就是說submit.save = save。

接下來我們編寫一個LookupDispatchAction的子類,代碼如下:

package action;
import org.apache.struts.actions.LookupDispatchAction;
……
   public class MyLookupDispatchAction extends LookupDispatchAction
   {
       //  為了方便描述,在這裡未使用屬性文件,只是直接將key和value的映射添加到Map對象中
       //  讀者可以在getKeyMethodMap方法中從屬性文件中讀取相應的key-value對
       //  來添加到Map對象中
       protected Map getKeyMethodMap()
       {
           Map m = new HashMap();
           m.put("submit.print", "print");
           m.put("submit.save", "save");
           return m;
       }
       public ActionForward print (ActionMapping mapping, ActionForm form,
               HttpServletRequest request, HttpServletResponse response)
       {
           // 處理print代碼
       }
       public ActionForward save(ActionMapping mapping, ActionForm form,
               HttpServletRequest request, HttpServletResponse response)
       {
           // 處理save代碼
       }
   }

在編寫LookupDispatchAction的子類時要注意必須實現getKeyMethodMap方法,在這個方法中需要進行key和Action方法的映射。下面的代碼用來配置MyLookupDispatchAction。

<action path="/moresubmit" type="action.MyLookupDispatchAction" parameter="action" />

其中parameter屬性指定了請求URL中由提交按鈕生成的請求參數名。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved