MESSL(maven + extjs + spring portlet mvc + spring web flow + liferay )整合架构 8

 

我们已经知道如何从页面上触发动作来激活flow的transition,我们现在思考问题,如果这个动作需要用到flowScope上的数据,那么我们如何用程序来和flowScope交互呢?

 

方法很简单,我们在业务方法中加一个参数,参数类型为RequestContext,用这个类就可以和flowScope进行交互了:

 
  
  1. /** 
  2.      * remove the AppInfo from flow scope 
  3.      */ 
  4.     public void removeAppInfo(RequestContext context) { 
  5.  
  6.         // clear all the information which has been stored in this object 
  7.         context.getFlowScope().remove("appInfo"); 
  8.         //context.getFlowScope().remove("appInfoJSONData"); 
  9.         context.getFlowScope().put("appInfoJSONData"new JSONObject().toString()); 
  10.         context.getFlowScope().put("hasAppInfoData",false); 
  11.     } 
  12.      

比如,这里我们定义了一个业务方法叫removeAppInfo,我们让它的逻辑为从flowScope上删除appInfo的数据,然后把appInfoJSONData清零,最后吧hasAppInfoData设为false .

 

这个方法的调用,我们还是通过绑定页面上的某个事件来触发调用,和上一篇文章一样,所以我这里就略去了。假设是在defineApp.jsp页面上,并且_eventId为cancel时候触发调用:

 
  
  1. <portlet:actionURL var="cancel"> 
  2.     <portlet:param name="execution" value="${flowExecutionKey}" /> 
  3.     <portlet:param name="_eventId" value="cancel" /> 
  4. </portlet:actionURL> 

 

那么在flowScope上,为了绑定这段java业务逻辑代码,我们就在flow定义文件中view-state为defineApp的代码配置如下:

 
  
  1. <view-state id="defineApp" >          
  2.      ...
  3.         <transition on="cancel" to="aerEnvList" > 
  4.             <evaluate expression="defineAppService.removeAppInfo(flowRequestContext)" /> 
  5.             <evaluate expression="defineProjectService.removeProjectInfo(flowRequestContext)" /> 
  6.             <evaluate expression="defineHostVipService.removeHostVipInfo(flowRequestContext)" /> 
  7.             <evaluate expression="defineDBSrvService.removeDBServiceInfo(flowRequestContext)"/> 
  8.         </transition> 
  9.     </view-state> 

 

这里可以看出来,在04行,只要传一个内置变量名为flowRequestContext,就可以轻松的调用对应业务方法了,而这个flowRequestContext中的内容,就对应了我们java类org.springframeowork.webflow.execution.RequestContext





本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1138934,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值