Spring Web Flow

Spring web flow是从Spring Framework中分离出来一个开发模块,是spring 模块栈中的一部分,Spring Web Flow 的目标是成为管理Web应用页面流程的最佳方案。当你的应用需要复杂的导航控制,例如向导,在一个比较大的事务过程中去指导用户经过一连串的步骤的时候,SWF将会是一个功能强大的控制器。

流程组件

spring web flow有三个组件,分别为状态,转移,和流程数据。我们可以把swf看成在高速公路上的汽车,状态相当于汽车,汽车具有很多功能;转移是我们开车的高速公路;而流程数据是车上的货物,我们到了一些特定的地方就要执行装车或者卸车的动作。

状态

状态时swf进行数据处理,Spring web flow 定义了五种不同的状态,分别为行为,决策,视图,结束,子流程。
行为
行为一般情况下是我们具体的操作,主要是执行我们加载进来的bean的一些方法,并根据bean的执行结果跳转到对应的下一个状态。
书写方式

<action-state id="">
   <evaluate expression="bean.method"/>
   <transition to=""/>
 </action-state>

视图状态
视图状态顾名思义就是向用户展示和用户交互的界面,通过该界面可以让用户进行输入。
书写方法

<view-state id="name"/>

name的含义具有两个含义,1.在流程状态中表示该状态(也就是唯一标识)2.因为没有指定逻辑视图所以他也表示状态展现的逻辑视图的名字是name
显示调用视图的方法如下

<view-state id="name" view="path">

如果视图中存在绑定的表单,需要绑定到视图中使用modle如下

<view-state id="name" model="flowScope.paymentDetails"

这样就完成了绑定。其中paymentDetails表示作用域中的对象
决策状态
决策状态相当于我们在编写代码中的if,他主要是将结果进行判断从而进入到不同的选项中。决策状态评估的是一个布尔型的表达。如下

<decision-state id="name">
 <if test="布尔表达式"
  then="状态"
  else="状态"/>
</decision-state>

子流程状态
子流程类似于我们在方法中调用其他方法,当其他方法执行结束时,会返回来继续执行。

<subflow-state id="name" subflow="pizza/order">
 <input name="order" value="ordre"/>
 <transition on="状态" to="状态">
 </subflow-state>

结束状态
当该流程结束(可能时子流程)则最后进入到流程结束的状态。
流程结束会后会发生三种情况
1.子流程结束,则返回子流程 的调用处,继续原状态执行
2.如果结束中带有view属性,则指定的视图会被渲染。如果添加了"externalRedirecrt"前缀,将会重定向到流程外部的界面。如果添加了"flowRedirect"前缀,将会重定向另一个流程。
3.如果不是子流程,也没有指定的view,会进入到指定的url,并结束流程

<end-state id="name" />
转移

转移是一个内套的标签,每一个状态中都只要要有一个转移来确定下一步具体干什么。

<transition on="前台传过来的标志" to="state" >

其中on可以省略,on是用来确定是否执行该过程,如果传过来是该标志则执行,这里可以存在多个transition
如果我们在开发存在中取消,如果每个取消位置都要写一个transition会显得十分麻烦,因此,存在了一个全局的转移,当该事件发生时,无论在哪里都会进行跳转如下

<global-transitions>
 <transition on="" to="">
 <global-transition>
流程数据

1.声明变量

方法一:<var name="" class=""/>
方法二:<evaluate result="作用域.变量" expression="方法">
方法三:<set name="作用域.变量" value="类">

2.作用域
Conversation 全局,可以被其他的流程访问
Flow 当前流程可以访问
Request 请求作用域,当请求结束时失效
flash 在流程创建到流程结束有效,当视图渲染时也失效。
view 当进入视图状态时生效,当视图状态推出则无效。

结束
使用上面的状态,数据流,转移相互配合,则会搭配出不同的流程,在和jsp相对应就会产生数据流图。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值