隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
          數據加載中……

          Struts1.x系列教程(20):使用EventDispatchAction類處理一個form多個submit

          本文為原創,如需轉載,請注明作者和出處,謝謝!

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

          雖然LookupDispatchAction類可以很好地處理擁有多個提交按鈕的Form,但是必須要和屬性文件相關聯,而且還得在getKeyMethodMap方法中進行keyAction方法的映射,使用起來十分不方便。從Struts1.2.9開始,加入了另一個用于處理多個提交動作的EventDispatchAction類。這個類也是DispatchAction的子類,它在使用上要比LookupDispatchAction類容易的多。EventDispatchAction類的基本原理是通過<action>元素的parameter屬性指定多個動作,中間用逗號(,)分隔。每個動作實際上就是<html:submit>標簽的property屬性值。這樣EventDispatchAction類就可以根據每個<html:submit>標簽的屬性值來確定用戶按的是哪個提交按鈕了。

          我們可以按如下三步來使用EventDispatchAction類。

          【第1步】實現EventDispatchAction的子類

          <samples工程目錄>\src\action目錄中建立一個MyEventDispatchAction.java文件,代碼如下:

            package action;

            
          import java.io.PrintWriter;
            
          import javax.servlet.http.*;
            
          import org.apache.struts.action.*;
            
          import org.apache.struts.actions.*;
            
            
          public class MyEventDispatchAction extends EventDispatchAction 
            {      
                
          // 處理print動作
                public ActionForward print(ActionMapping mapping, ActionForm form,
                        HttpServletRequest request, HttpServletResponse response)
                {
                    
          try
                    {
                        response.setCharacterEncoding(
          "GBK");
                        PrintWriter out 
          = response.getWriter();            
                        out.println(
          "打印成功!");
                    }
                    
          catch (Exception e)
                    {
                    }
                    
          return null;
                } 
                
          // 處理save動作
                public ActionForward save(ActionMapping mapping, ActionForm form,
                        HttpServletRequest request, HttpServletResponse response)
                {
                    
          try
                    {
                        response.setCharacterEncoding(
          "GBK");
                        PrintWriter out 
          = response.getWriter();
                        out.println(
          "保存成功!");
                    }
                    
          catch (Exception e)
                    {
                    }
                    
          return null;
                } 
            } 

          MyEventDispatchAction類中有兩個方法:printsave,分別用來處理property屬性值為“print”和“save”的<html:submit>標簽提交的請求動作。

          【第2步】配置EventDispatchAction

              打開struts-config.xml文件,在 <action-mappings>元素中加入如下的內容:
          <action name = "firstValidatorForm" path="/event" 
          type
          ="action.MyEventDispatchAction" validate="false" parameter="print,save"/>

          【第3步】實現有多個提交按鈕的JSP頁面

          Web根目錄中建立一個moreSubmit.jsp文件,代碼如下:

            <%@ page pageEncoding="GBK"%>
            
          <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
            
          <html>
              
          <head>
                
          <title>多提交演示</title>
              
          </head>
              
          <body>           
                
          <html:form action="event" >
                   name:
          <html:text property="name" />&nbsp;&nbsp;<p>
                         
          <html:submit property="print" value="打印"/>
                         
          <html:submit property="save" value="保存"/>
                
          </html:form>  
              
          </body> 
            
          </html>
              在編寫moreSubmit.jsp文件時要注意,“打印”和“保存”按鈕的property屬性必須和<action>動作中的parameter參數值一致。也就是“print”和“save”。
              啟動Tomcat后,在IE中輸入如下的URL來測試程序:

          http://localhost:8080/samples/moreSubmit.jsp

              為了區別提交請求參數和其他參數,在<html:submit>標簽的property屬性值還可以有一個后綴“.x”(<action>元素的parameter屬性值仍然是“print, save”。如“打印”按鈕的代碼可以寫成如下形式:

          <html:submit property="print.x" value="打印"/>

          下一篇:Struts1.x系列教程(21):使用MappingDispatchAction類調用不同的Action方法



          Android開發完全講義(第2版)(本書版權已輸出到臺灣)

          http://product.dangdang.com/product.aspx?product_id=22741502



          Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


          新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

          posted on 2009-02-24 15:07 銀河使者 閱讀(2390) 評論(1)  編輯  收藏 所屬分類: javaweb 原創struts1.x

          評論

          # re: Struts1.x系列教程(20):使用EventDispatchAction類處理一個form多個submit  回復  更多評論   

          good...
          2009-02-24 21:28 | ci
          主站蜘蛛池模板: 庆云县| 吴川市| 汤原县| 鹤山市| 松江区| 西藏| 水城县| 酉阳| 铁岭市| 巧家县| 攀枝花市| 家居| 温宿县| 玛曲县| 太原市| 左贡县| 河南省| 滁州市| 高平市| 新宾| 托里县| 弥勒县| 金乡县| 安溪县| 石屏县| 集安市| 镇原县| 丰城市| 上思县| 乳源| 泽州县| 星子县| 宜都市| 清水县| 获嘉县| 株洲市| 驻马店市| 昭通市| 建始县| 金阳县| 柘城县|