spring webflow2.4整合springmvc 4.3配置及简单例子

转载注明出处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>

 

 

 

 

 

 



posted @ 2017-03-15 12:18  wdfwolf3  阅读(1490)  评论(3编辑  收藏  举报