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,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
缓存 NoSQL 数据库
高性能Web服务器架构设计
【8月更文第28天】在当今互联网时代,网站的响应速度直接影响用户体验和业务成功率。因此,构建一个高性能的Web服务器架构至关重要。本文将从硬件配置、软件架构以及网络设置三个方面探讨如何提高Web服务器的性能,并提供一些实际的代码示例。
96 0
|
21天前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
6天前
|
缓存 Kubernetes Java
阿里云 SAE Web:百毫秒高弹性的实时事件中心的架构和挑战
SAE 事件中心通过智能诊断显示通知与用户连接起来,SAE WEB 百毫秒弹性实例给事件中心带来了新的实时性、海量数据和高吞吐的挑战,本篇将带您了解 SAE 整体事件中心的架构和挑战。
|
9天前
|
XML 缓存 前端开发
springMVC02,restful风格,请求转发和重定向
文章介绍了RESTful风格的基本概念和特点,并展示了如何使用SpringMVC实现RESTful风格的请求处理。同时,文章还讨论了SpringMVC中的请求转发和重定向的实现方式,并通过具体代码示例进行了说明。
springMVC02,restful风格,请求转发和重定向
|
11天前
|
运维 安全 网络安全
Web安全-企业网络架构
Web安全-企业网络架构
16 1
|
1月前
|
前端开发 安全 JavaScript
构建高效Web应用:前后端分离架构的实践
【9月更文挑战第4天】在数字时代,Web应用已成为企业与用户互动的主要平台。本文将介绍如何通过前后端分离的架构设计来构建高效的Web应用,探讨该架构的优势,并分享实现过程中的关键步骤和注意事项。文章旨在为开发者提供一种清晰、高效的开发模式,帮助其在快速变化的市场环境中保持竞争力。
|
1月前
|
前端开发 安全 Java
技术进阶:使用Spring MVC构建适应未来的响应式Web应用
【9月更文挑战第2天】随着移动设备的普及,响应式设计至关重要。Spring MVC作为强大的Java Web框架,助力开发者创建适应多屏的应用。本文推荐使用Thymeleaf整合视图,通过简洁的HTML代码提高前端灵活性;采用`@ResponseBody`与`Callable`实现异步处理,优化应用响应速度;运用`@ControllerAdvice`统一异常管理,保持代码整洁;借助Jackson简化JSON处理;利用Spring Security增强安全性;并强调测试的重要性。遵循这些实践,将大幅提升开发效率和应用质量。
54 7
|
1月前
|
前端开发 测试技术 开发者
MVC模式在现代Web开发中有哪些优势和局限性?
MVC模式在现代Web开发中有哪些优势和局限性?
|
1月前
|
设计模式 存储 SQL
在web框架中实现解释器架构
【9月更文挑战第3天】解释器架构风格基于解释器设计模式,通过将问题建模为特定语言或指令集并逐条解析执行。然而,解释器风格也可能面临性能问题和扩展性限制。
25 1
|
2月前
|
负载均衡 网络协议 Linux
在Linux中,常用WEB服务器负载架构有哪些?
在Linux中,常用WEB服务器负载架构有哪些?

推荐镜像

更多
下一篇
无影云桌面