最近由于集团项目架构太老了,然后全国都在调用,没办法,老的流程还得保留,经商量,决定吧框架新搭建一套,老框架采用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