Welcome 微信登录

首页 / 软件开发 / JAVA / Struts1.x系列教程(20):使用EventDispatchAction类处理一个form多个submit

Struts1.x系列教程(20):使用EventDispatchAction类处理一个form多个submit2011-01-10 BlogJava 银河使者虽然LookupDispatchAction类可以很好地处理拥有多个提交按钮的Form,但是必须要和属性文件相关联,而且还得在getKeyMethodMap方法中进行key和Action方法的映射,使用起来十分不方便。从Struts1.2.9开始,加入了另一个用于处理多个提交动作的EventDispatchAction类。这个类也是DispatchAction的子类,它在使用上要比LookupDispatchAction类容易的多。EventDispatchAction类的基本原理是通过<action>元素的parameter属性指定多个动作,中间用逗号(,)分隔。每个动作实际上就是<html:submit>标签的property属性值。这样EventDispatchAction类就可以根据每个<html:submit>标签的属性值来确定用户按的是哪个提交按钮了。

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

【第1步】实现EventDispatchAction的子类

在<samples工程目录>srcaction目录中建立一个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类中有两个方法:print和save,分别用来处理property属性值为“print”和“save”的<html:submit>标签提交的请求动作。