转载注明出处http://www.cnblogs.com/wdfwolf3/p/6553545.html
web.xml文件和springmvc-servlet文件按照常规配置,不再赘述。修改Spring配置文件application-context.xml,添加下列代码
<flow:flow-executor id="flowExecutor" />
<!--方法1:此时id为base-path和flow流程文件名中间的部分。如果流程文件*-flow.xml路径为/WEB-INF/flows/test/wdfwolf3-flow.xml, 那么id为/test,访问的url即为/test;这里有个问题就是如果valut=“/*-flow.xml”这样写的话base-path和.xml文件中间不能有路径了,此时
id为文件名,类似于第二种方法--> <flow:flow-registry id="flowRegistry" base-path="WEB-INF/flows"> <flow:flow-location-pattern value="/**/*-flow.xml" /> </flow:flow-registry> <!--方法2:此时id为flow文件名,即test。访问的url即为/testflow--> <!--<flow:flow-registry id="flowRegistry"> <flow:flow-location path="WEB-INF/flows/testflow.xml"/> </flow:flow-registry>--> <!--方法3:此时id自定义指定为test。访问的url即为/test--> <!--<flow:flow-registry id="flowRegistry"> <flow:flow-location id="test" path="WEB-INF/flows/testflow.xml"/> </flow:flow-registry>-->
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping" > <property name="flowRegistry" ref="flowRegistry" /> </bean>
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter"> <property name="flowExecutor" ref="flowExecutor"/> </bean>
这里也可以将flow的配置单独建一个文件,然后在application-context中<import resource="flow配置文件" />。
由于本文讲的是配置,所以不讲解webflow的使用。举个简单的例子,主要说明一下view的映射,当访问/url请求时,如果DispatcherServlet找不到对应的处理器controller,就会交给Web Flow,这样Web Flow就会按照流程定义开始流程。来看一下流程文件testflow.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.4.xsd" > <view-state id="viewCart" view="viewCart.jsp"> <transition on="submit" to="viewOrder"> </transition> </view-state> <view-state id="viewOrder"> <transition on="returnToIndex" to="returnToIndex"> </transition> </view-state> <end-state id="returnToIndex" view="externalRedirect:servletRelative:/index.jsp"> </end-state> </flow>
<view-state>,如果只有id属性的时候,会在流程文件所在的文件夹寻找id名字的jsp文件作为view。如果明确指定view属性的话,就找这个名字的jsp文件。在调试过程中遇到的两个坑:
1.view属性中文件名需要写上.jsp,不然找不到。
2.具体在哪里找jsp文件,官方文档(下图)中有说明,即“in the directory where the flow is located”,流程所在文件夹。最后是几个jsp文件
viewCart.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>View Cart</title> </head> <body> <h1>View Cart</h1> <a href="${flowExecutionUrl}&_eventId=submit">Submit</a> </body> </html>
viewOrder.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1>View Order</h1> <a href="${flowExecutionUrl}&_eventId=returnToIndex">Return to index</a> </body> </html>