Struts1.2.9后的EventDispatchAction:简化处理多submit按钮
需积分: 9 122 浏览量
更新于2024-12-01
收藏 34KB DOC 举报
"本文将详细介绍如何使用Struts框架中的EventDispatchAction类来处理一个表单中的多个提交按钮。EventDispatchAction是DispatchAction的子类,它简化了在多个提交按钮场景下的处理方式,无需像LookupDispatchAction那样依赖属性文件和复杂的映射配置。"
在Struts框架中,当一个表单需要有多个提交按钮时,通常会遇到处理不同提交事件的挑战。EventDispatchAction 类自Struts 1.2.9版本引入,为了解决这个问题提供了更为便捷的解决方案。相比于LookupDispatchAction,EventDispatchAction 的使用更加直观和简单。
使用EventDispatchAction的步骤
1. 创建Action子类
首先,你需要创建一个继承自EventDispatchAction的子类。例如,在`<samples工程目录>\src\action`目录下创建名为`MyEventDispatchAction.java`的文件。在这个例子中,我们看到代码中定义了一个名为`MyEventDispatchAction`的类,它扩展了`EventDispatchAction`。这样,我们就可以重写该类的方法来处理不同的提交事件。
```java
package action;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForward;
import org.apache.struts.actions.EventDispatchAction;
public class MyEventDispatchAction extends EventDispatchAction {
// ...
}
```
2. 实现处理方法
每个提交按钮对应的事件需要一个对应的方法来处理。例如,我们可以创建一个`print`方法来处理`print`动作。在`MyEventDispatchAction`类中,我们可以添加以下方法:
```java
public ActionForward print(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
try {
response.setCharacterEncoding("GBK");
PrintWriter out = response.getWriter();
out.println("这是处理print动作的代码...");
out.close();
} catch (Exception e) {
// 错误处理
}
return null; // 或返回一个ActionForward对象,指向下一个页面
}
```
3. 配置struts-config.xml
在`struts-config.xml`配置文件中,我们需要为每个提交按钮创建一个`<action>`元素,并通过`parameter`属性指定每个动作。例如,对于上面的`print`动作,配置如下:
```xml
<action path="/myEventDispatch" type="action.MyEventDispatchAction">
<forward name="success" path="/success.jsp"/>
<!-- 添加以下代码以处理print动作 -->
<parameter name="print" method="print"/>
</action>
```
在这个配置中,`/myEventDispatch`是表单提交的路径,`print`是`<html:submit>`标签的`property`属性值,与我们在Action类中定义的方法相对应。
HTML 表单中的使用
在JSP页面中,我们可以创建一个表单,并为每个提交按钮指定不同的`property`属性:
```jsp
<form action="<%= request.getContextPath() %>/myEventDispatch.do" method="post">
<input type="submit" name="print" value="打印"/>
<input type="submit" name="save" value="保存"/>
</form>
```
在这个例子中,`print`和`save`是两个不同的提交按钮,它们分别对应`print`和`save`的动作。
总结,EventDispatchAction 类通过在`struts-config.xml`中配置参数和在Action子类中定义相应的方法,使得处理具有多个提交按钮的表单变得简单直接。它避免了LookupDispatchAction所需的属性文件映射,提高了开发效率。通过以上步骤,开发者可以轻松地实现对不同提交事件的区分和处理。
2013-05-24 上传
2010-04-23 上传
2024-12-01 上传
2024-12-01 上传
2024-12-01 上传
2024-12-01 上传
2024-12-01 上传
2024-12-01 上传
2024-12-01 上传
scottallen
- 粉丝: 0
- 资源: 4
最新资源
- GyroDraw:Android多人在线绘画游戏
- 黑色导航简洁商务风格外贸模板-导航 大图 简洁 商务 外贸 企业 html 英文.rar
- C++调用DLL、bin方法,自带获取CPU序号和硬盘序号DLL.zip
- MEGR 3171自动房间照明_智能家居物联网开发PCB设计方案.rar
- 勇士的奇妙大冒险之几何炼金 - 洋葱数学极客挑战赛最佳创意奖.zip
- cube-element:聚合物立方体元素
- grunt-gitinfo:从工作副本中获取Git信息,并使用数据填充grunt.config
- personalyzer:在网站上放置视频发言人的代码
- posts_app:在NESTJS中练习测试应用
- Display_v4.61C_w77e532a_KodakCPG86_
- goodordermanager-spring.zip
- LORA网关及采集端_智能家居物联网开发PCB设计方案.rar
- 最大子段和问题的简单算法.zip
- 水环式真空泵在不同工况时的运行特性Word版.rar
- vue-a2b:Vue.js的分割测试
- java+sql图书管理系统