使用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="打印"/>