苹果x使用教程视频 Struts1.x系列教程(20):使用EventDispatchAction类处理一个form多

Struts1.x系列教程(20):使用EventDispatchAction类处理一个form多
虽然LookupDispatchAction类可以很好地处理拥有多个提交按钮的Form 但是必须要和属性文件相关联 而且还得在getKeyMethodMap方法中进行key和Action方法的映射 使用起来十分不方便 从Struts 开始 加入了另一个用于处理多个提交动作的EventDispatchAction类 这个类也是DispatchAction的子类 它在使用上要比LookupDispatchAction类容易的多 EventDispatchAction类的基本原理是通过<action>元素的parameter属性指定多个动作 中间用逗号( )分隔 每个动作实际上就是< submit>标签的property属性值 这样EventDispatchAction类就可以根据每个< submit>标签的属性值来确定用户按的是哪个提交按钮了
我们可以按如下三步来使用EventDispatchAction类
【第 步】实现EventDispatchAction的子类
在<samples工程目录>srcaction目录中建立一个MyEventDispatchAction java文件 代码如下
package action; import java io PrintWriter; import javax servlet *; import apache struts action *; import 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 的< submit>标签提交的请求动作
【第 步】配置EventDispatchAction类
打开struts config xml文件 在 <action mappings>元素中加入如下的内容
<action name = firstValidatorForm path= /event type= action MyEventDispatchAction validate= false parameter= print save />
【第 步】实现有多个提交按钮的JSP页面
在Web根目录中建立一个moreSubmit jsp文件 代码如下
<%@ page pageEncoding= GBK %> <%@ taglib uri= prefix= %> <> <head> <title>多提交演示</title> </head> <body> <:form action= event > name <:text property= name /> <p> <:submit property= print value= 打印 /> <:submit property= save value= 保存 /> </:form> </body> </>
在编写moreSubmit jsp文件时要注意 打印 和 保存 按钮的property属性必须和<action>动作中的parameter参数值一致 也就是 print 和 save
启动Tomcat后 在IE中输入如下的URL来测试程序
为了区别提交请求参数和其他参数 在< submit>标签的property属性值还可以有一个后缀 x (<action>元素的parameter属性值仍然是 print save 如 打印 按钮的代码可以写成如下形式
lishixinzhi/Article/program/Java/ky/201311/28126