dispatchAction

 DispatchAction 收藏
DispatchAction是一个抽象类,继承于Action。它帮助我们使用一个Action类,来集中处理多个操作,从而节省了类的数目。

 

例如:下面的例子。按照struts的流程来分析,JSP-->ActionServlet-->struts-config.xml-->Action-->ActionForward-->browser

 

1.JSP页面提交表单到ActionServlet,ActionServlet截取URL,然后根据struts-config.xml配置文件去找相应的Action,执行相应的操作(这里Action只有一个即UserAction,如何区别是何种操作?---根据方法名来找到不同的操作。)颜色相同一定要匹配。

action="usermaintain.do?command=add";

action="usermaintain.do?command=del";

action="usermaintain.do?command=modify";

 

2.UserAction继承于DispatchAction,包含了三个操作方法,分别是add(),del(),modify(),方法名称与form表单传递的属性一一对应

public class UserAction extends DispatchAction {

         public ActionForward add(mapping, form, request, response) throws Exception {

                   return mapping.findForward("add_success");

         }

         public ActionForward del(mapping, form, request, response) throws Exception {

                   return mapping.findForward("del_success");

         }

         public ActionForward modify(mapping, form, request, response) throws Exception {

                   return mapping.findForward("modify_success");

         }

}

 

3.struts-config.xml中,parameter的属性值是可以任意起的,即command可以是其他。只要保证form表单中传参数时与之统一就行。

<action-mappings>

         <action path="/user/usermaintain"

                   type="com.bjsxt.drp.bussiness.usermgr.actions.UserAction"

                   name="userForm"

                   scope="request"

                   parameter="command"

                   >

                   <forward name="add_success" path="/user/usermaintain.do?command=list" redirect="true"/>

                   <forward name="del_success" path="/user/usermaintain.do?command=list" redirect="true"/>

                   <forward name="modify_success" path="/user/usermaintain.do?command=list" redirect="true"/>

                   <forward name="list_success" path="/user/userlist.jsp"/>

                   <forward name="find_success" path="/user/usermodify.jsp"/>

         </action>

</action-mappings>

这里的forward有的是直接提交到一个JSP页面,有的是提交到另一个动作。forward中name值和UserAction中findForward匹配。

 

注:1.DispatchAction中各个操作方法的参数如add(),del(),modify()和execute()方法的参数相同。

2.DispatchAction通过方法名来区别各个不同的操作。

3.在调用DispatchAction的时候command参数是不能为空的,如果空,DispatchAction会调用unspecified方法并抛出异常。详见下一遍DispatchAction的流程

4.UserAction 可以复写execute方法,但复写完成之后必须显示调用它的上层实现DispatchAction.execute()

 

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/switzerland/archive/2008/10/10/3051950.aspx

### ECharts 中 `dispatchAction` 方法详解 #### 什么是 `dispatchAction` `dispatchAction` 是 ECharts 提供的一个方法,用于主动触发图表中的交互行为。这使得开发者可以在特定条件下动态改变图表的状态或高亮某些数据项。 #### 如何使用 `dispatchAction` 要调用此功能,需先确保已成功初始化了一个 ECharts 实例对象(通常命名为 `myChart`)。之后便可以通过该实例来执行各种动作命令[^1]: ```javascript // 假设已经有一个名为 myChart 的 echarts 实例 myChart.dispatchAction({ type: 'highlight', seriesIndex: 0, dataIndex: 2 }); ``` 上述代码片段展示了如何突出显示第一个系列 (`seriesIndex: 0`) 下第三个数据点 (`dataIndex: 2`) 的效果。 对于更复杂的场景,比如在一个 uni-app 小程序环境中集成 ECharts 并尝试使用 `dispatchAction` 来实现交互逻辑时,则需要注意一些额外事项。由于框架本身的特性,在这种情况下可能需要特别处理事件绑定以及确保上下文环境正确无误[^2]: ```javascript _this.$refs.echartsUni.$curChart.on('click', function (params) { _this.$nextTick(() => { // 确保 DOM 更新完成后再操作 const chartInstance = _this.$refs.echartsUni.$curChart; // 执行 dispatchAction 动作 chartInstance.dispatchAction({ type: 'downplay', seriesIndex: params.seriesIndex, dataIndex: params.dataIndex }); }) }) ``` 这段代码说明了当点击某个数据项后,会立即将其淡化展示出来(`type:'downplay'`)。这里还涉及到 Vue.js 生命周期管理的知识点 `_this.$nextTick()` ,用来保证视图更新完毕后再去修改状态。 综上所述,掌握好 `init`, `setOption` 和 `dispatchAction` 这三个核心 API 对于灵活运用 ECharts 至关重要。同时也要注意不同开发环境下可能存在细微差异,因此建议阅读官方文档并多做实践探索[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值