spring4.2.2整合webflow2.4,真是项目中的实战经验

最近由于集团项目架构太老了,然后全国都在调用,没办法,老的流程还得保留,经商量,决定吧框架新搭建一套,老框架采用spring2,0webflow是1.0

新框架采用的springmvc+mybais架构.spring采用的4.2.2版本webflow采用的2.4版本的,但是这是个坑,2.4的webflow跟之前的用法很多地方做了改变,


而且网上好多都是在讲述1.0的用法,关于webflow2.4的屈指可数,而且有的也是简单的配置了一下流程,.

无奈自己研究,看源码 ,然后猜着去尝试,

首先看下login.xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="
              http://www.springframework.org/schema/webflow
     	 http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">
<!-- .doExecute(flowRequestContext) -->
	<action-state id="initialFlowSetup">
		<evaluate expression="initialFlowSetupAction"/>
		<transition on="submit"	to="submit" />
		<transition on="createOneTimePassword"	to="createOneTimePassword" />
		<transition on="viewLoginForm" to="viewLoginForm" />
		<transition on="warn" to="showWarningView" />
		<transition on="error" to="viewLoginForm" />
		<transition on="gateway" to="redirectView" />
		<transition on="viewGenericLoginSuccess" to="viewGenericLoginSuccess" />
		<transition on="redirect" to="redirectView" />	
	</action-state>

	

	<view-state id="viewLoginForm" view="casLoginView">
		<on-render>
<!-这是一个表达式,一定要指明你的方法名.并且要传参,不要写on-start->
			<evaluate expression="authenticationViaFormAction.setupForm(flowRequestContext)"  />
			<evaluate expression="authenticationViaFormAction.referenceData(flowRequestContext)" />
		</on-render>
		<transition on="submit" to="bindAndValidate" />
	</view-state>
</flow>

刚开始配置的时候一直卡在on-start哪里不知道怎么转到action-start

后来也是大胆的尝试,将on-start直接干掉.你妈竟然好了.

spring-mvc.xml配置,此处为springmvc与webflow整合之重点

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:p="http://www.springframework.org/schema/p" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:webflow="http://www.springframework.org/schema/webflow-config" 
     xsi:schemaLocation=" 
          http://www.springframework.org/schema/aop   
          http://www.springframework.org/schema/aop/spring-aop-4.2.xsd  
          http://www.springframework.org/schema/beans   
          http://www.springframework.org/schema/beans/spring-beans-4.2.xsd  
          http://www.springframework.org/schema/webflow-config 
          http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd">
	     
  	 <bean id="casPropertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
			<property name="location" value="classpath:uam.properties"></property>
		</bean>
		
	 <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">  
	    <property name="supportedMediaTypes">  
	        <list>  
	            <value>text/html;charset=UTF-8</value>  
	        </list>  
	    </property>  
	</bean> 
<!-我的页面都是通过在properties文件中取得的路径,所以这里的的视图解析器我配置的不大一样->
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.ResourceBundleViewResolver"
		p:order="0">
		<property name="basenames">
			<list>
				<value>${uam.viewResolver.basename}</value>
				<value>protocol_views</value>
			</list>
		</property>
	</bean>
	
	 
    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
	
	<!-- webflow配置 --> 
	<bean name="flowController" class="org.springframework.webflow.mvc.servlet.FlowController">
        <property name="flowExecutor" ref="flowExecutor"/>
    </bean>	   
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
<!-此处有坑.我不加后缀的话此处拦截不到->
                <prop key="/login.do">flowController</prop>
            </props>
        </property>
    </bean>      
	<webflow:flow-executor id="flowExecutor" /> 	   
    <webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
        <webflow:flow-location path="/WEB-INF/login-webflow.xml" id="login" />
    </webflow:flow-registry>      
    <webflow:flow-builder-services id="flowBuilderServices" view-factory-creator="mvcViewFactoryCreator" />    
    <bean id="mvcViewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
        <property name="viewResolvers" ref="viewResolver" />
    </bean> 
 </beans>


最后还是你妈报错,发现原来webflow中可以获取request和response现在2.4的已经略去此功能,于是采用filter+threadLocal的方式获取

filter和ThreadLocal工具类的下载地址为:

http://download.csdn.net/download/qq_38665235/9970336

http://download.csdn.net/download/qq_38665235/9970328

欢迎转载,请注明出处

http://blog.csdn.net/qq_38665235/article/details/77895936

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值