熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

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

2013-11-23 20:12:23  來源: Java開源技術 

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

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

  【第步】實現EventDispatchAction的子類

  在<samples工程目錄>\src\action目錄中建立一個MyEventDispatchActionjava文件代碼如下

     package action;

  import javaioPrintWriter;
  import javaxservlethttp*;
  import orgapachestrutsaction*;
  import orgapachestrutsactions*;
  
  public class MyEventDispatchAction extends EventDispatchAction 
  {      
      // 處理print動作
      public ActionForward print(ActionMapping mapping ActionForm form
              HttpServletRequest request HttpServletResponse response)
      {
          try
          {
              responsesetCharacterEncoding(GBK);
              PrintWriter out = responsegetWriter();            
              outprintln(打印成功!);
          }
          catch (Exception e)
          {
          }
          return null;
      } 
      // 處理save動作
      public ActionForward save(ActionMapping mapping ActionForm form
              HttpServletRequest request HttpServletResponse response)
      {
          try
          {
              responsesetCharacterEncoding(GBK);
              PrintWriter out = responsegetWriter();
              outprintln(保存成功!);
          }
          catch (Exception e)
          {
          }
          return null;
      } 
  }

  在MyEventDispatchAction類中有兩個方法print和save分別用來處理property屬性值為printsave的<htmlsubmit>標簽提交的請求動作

  【第步】配置EventDispatchAction類

  打開strutsconfigxml文件在 <actionmappings>元素中加入如下的內容

   <action name = firstValidatorForm path=/event 
type=actionMyEventDispatchAction validate=false parameter=printsave/>

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

  在Web根目錄中建立一個moreSubmitjsp文件代碼如下

     <%@ page pageEncoding=GBK%>
  <%@ taglib uri=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>

  在編寫moreSubmitjsp文件時要注意打印保存按鈕的property屬性必須和<action>動作中的parameter參數值一致也就是printsave

  啟動Tomcat後在IE中輸入如下的URL來測試程序

  

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

   <html:submit property=printx value=打印/>


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28126.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.