strus-------EventDispatchAction,使用EventDispatchAction类处理一个form多个submit

使用EventDispatchAction类处理一个form多个submit

EventDispatchAction类用于处理一个页面有多个提交按钮。

EventDispatchAction类在struts-extras-1.3.10.jar中需要将struts-extras-1.3.10.jar放入
C:/Program Files/Java/jdk1.5.0_12/jre/lib/ext

truts1.2.9开始,加入了另一个用于处理多个提交动作的EventDispatchAction类。这个类也是 DispatchAction的子类,它在使用上要比LookupDispatchAction类容易的多。EventDispatchAction类的 基本原理是通过<action>元素的parameter属性指定多个动作,中间用逗号(,)分隔。每个动作实际上就 是<html:submit>标签的property属性值。这样EventDispatchAction类就可以根据每 个<html:submit>标签的属性值来确定用户按的是哪个提交按钮了。
<html:submit>标签的property属性相当于<input type=submit>的name属性。

    我们可以按如下三步来使用EventDispatchAction类。

    【第1步】实现EventDispatchAction的子类

package cn.hxex.tutorial;
import org.apache.struts.actions.EventDispatchAction;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import java.util.*;
public class myEventDispatchAction extends EventDispatchAction
{
      public ActionForward print(ActionMapping mapping,ActionForm form,
              HttpServletRequest request,HttpServletResponse response)
      {
          ActionForward af=null;
          System.out.println("点击打印按钮");
          return af;
      }
      public ActionForward save(ActionMapping mapping,ActionForm form,
              HttpServletRequest request,HttpServletResponse response)
      {
          ActionForward af=null;
          System.out.println("点击保存按钮");
          return null;
      }
}

    在myEventDispatchAction类中有两个方法:print和save,分别用来处理property属性值(name属性值)为“print”和“save”的<input type=submit>标签提交的请求动作。

    【第2步】配置EventDispatchAction类

    打开struts-config.xml文件,在 <action-mappings>元素中加入如下的内容:

      <action
              path="/moresubmit"
              type="cn.hxex.tutorial.myEventDispatchAction"
              parameter="print,save">
     </action>


    【第3步】实现有多个提交按钮的JSP页面

    在Web根目录中建立一个moreSubmit.jsp文件,代码如下:

<%@ page contentType="text/html;charset=UTF-8"%>
<html>
<head>
</head>
<body>
<form action="moresubmit.do">
<input type="submit" name="print" value="打印">
<input type="submit" name="save" value="保存">
</form>
</body>
</html>

    在编写moreSubmit.jsp文件时要注意,“打印”和“保存”按钮的property属性(name属性值)必须和<action>动作中的parameter参数值一致。也就是“print”和“save”。


    为了区别提交请求参数和其他参数,在<html:submit>标签的property属性值还可以有一个后缀“.x”(<action>元素的parameter属性值仍然是“print, save”。如“打印”按钮的代码可以写成如下形式:
<html:submit property="print.x" value="打印"/>

 

你可能感兴趣的:(strus-------EventDispatchAction,使用EventDispatchAction类处理一个form多个submit)