我们在之前讲到请求进入到web flow中,是通过FlowController这个控制器来实现的:
<bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController">
<property name="flowExecutor" ref="flowExecutor" />
</bean>
其实在这一个过程中经历了两个步骤:
一、首先将请求交给flowHandlerMapping处理,使该请求进入到web flow中去,并且与对应的flow匹配
二、然后由flowHandlerAdapter调用相应的flow
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
<property name="flowRegister" ref="flowRegister" />
</bean>
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
<property name="flowExecutor" ref="flowExecutor" />//调用flow的真正身份
</bean>
流程仓库配置两种方式:
一、 <webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
<webflow:flow-location path="/WEB-INF/flows/shopping.xml" id="shopping" />//如果不指定id,将会按照规则自
<webflow:flow-location path="/WEB-INF/flows/addToCart.xml" id="addToCart" />//动将URL后面的shopping指
</webflow:flow-registry> //定为该flow的id
二、<webflow:flow-registry id="flowRegistry" base-path="/WEB-INF/flows" flow-builder- services="flowBuilderServices">
<webflow:flow-location-pattern value="*-flow.xml"/>
<webflow:flow-location-pattern value="*-flow.xml"/>
</webflow:flow-registry>
/**表示这种方法一直都没有成功过,希望哪位大侠指点**/
spring web flow 一共有五中状态: view-state、action-state、subflow-state、end-state、decision-state
在这里主要讲一下decision-state,在我们的控制流程中可能需要通过数据的判断来决定下一步进入到哪一个状态,那么这时候就需要用到决策,即decision-state,用法很简单:
<decision-state id="">
<if test="" //test为判断的条件,通常通过调用业务逻辑来返回Boolean类型的值,在这里使用EL表达式
then="" //如果test为true则执行
else=""/> //如果test为false则执行
</decision-state>
流程中数据的作用域
使用<var name="" value="">创建的变量是流程中的即flow中中,在evaluate和set中通过name或者result来定义数据的作用域。