spring webflow getting start
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                spring webflow getting start
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                概述
很多時候,我們寫的流程都嵌在一大堆代碼中,沒有辦法直觀的管理。而spring webflow可以將流程抽出來,放到一個單獨的xml文件中,這樣流程就不會埋沒在代碼里了。
今天要做一個很簡單的流程: 商品發布流程
Created with Rapha?l 2.1.0開始顯示“類別選擇”頁面顯示“商品信息填寫”頁面結束做出來后,大概就是下面這個樣子:
“類別選擇”頁面:release_first.jsp
“商品信息填寫”頁面:release_second.jsp
項目的環境是 Spring MVC項目。
需要修改的文件:
- spring-servlet.xml (spring MVC配置文件)
- applicationContext.xml (spring 配置文件)
- releasegoods-flow.xml (spring webflow 配置文件)
- release_first.jsp
- release_second.jsp
實現
spring-servlet.xml
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping"><property name="flowRegistry" ref="flowRegistry" /></bean><!-- Define FlowHandlerAdapter to handle Spring Web Flow request call.This is the Controller class in Spring Web Flow --><bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter"><property name="flowExecutor" ref="flowExecutor" /></bean>- FlowHandlerMapping : 這個類會告訴DispatcherServlet,將匹配的請求發送給webflow處理(也就是發給FlowHandlerAdapter),匹配規則定義在flowRegistry里。 
- FlowHandlerAdapter :起到流程控制器的作用,處理所有進入webflow的請求 
上面兩個配置,其實都是在解決請求怎么進入到流程的問題,并不屬于流程的一部分。
applicationContext.xml
<!-- webflow相關配置 --><!-- 流程執行器 --><flow:flow-executor id="flowExecutor" flow-registry="flowRegistry"></flow:flow-executor><!-- 流程注冊表 --><flow:flow-registry id="flowRegistry"><flow:flow-location path="/WEB-INF/flows/releasegoods/releasegoods-flow.xml" id="viewgoodsclass"></flow:flow-location></flow:flow-registry>- <flow:flow-executor>:流程執行器,負責創建和執行流程
- <flow:flow-registry :流程注冊表,通過<flow:flow-location>的path屬性指出流程定義的位置,通過id屬性指出流程的訪問地址。比如這里定義的流程,就可以通過:http://localhost:8080/viewgoodsclass 來打開。
releasegoods-flow.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/webflowhttp://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd"><var name="goods" class="com.huanle.model.entity.GoodsEntity"/><view-state id="viewfirst" view="/views/user/releasegoods/release_first.jsp" model="goods"><transition on="submit" to="viewsecond"></transition></view-state> <view-state id="viewsecond" view="/views/user/releasegoods/release_second.jsp" model="goods"><transition on="submit" to="returntouserindex"></transition></view-state><end-state id="returntouserindex" view="/index.jsp"></end-state><global-transitions><transition on="cancel" to="returntouserindex"></transition></global-transitions></flow>上面這個文件定義了流程:
- <var> : 配置了一個變量,作用范圍是整個流程,注意,這個變量的類要實現Serializable接口
- <view-state> : 視圖狀態,流程在這個狀態下會顯示一個視圖與用戶交互。
- <transition> : 定義跳轉,比如這里的第一個transition標簽的意思是:檢測到submit事件就跳轉到viewsecond狀態。submit事件指的不是html form的submit事件,而是我們自定義的一個標記,可以隨便取名。
- <end-state> :終點狀態。(也許會奇怪為什么沒有開始狀態,因為默認第一個狀態就是開始狀態)
- <global-transitions> : 定義全局跳轉,因為cancel在任何一個狀態里都需要,所以配置為全局跳轉。
release_first.jsp
<form:form action="${flowExecutionUrl}&_eventId=submit" method="post" commandName="goods"><input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}"/><div class="release"><input type="submit" value="我已閱讀以下規則,現在發布寶貝"/></div></form:form>- flowExecutionUrl :提交的url,通過這個地址可以和流程交互。一般就像上面這樣用就可以了。
- _eventId : 這個參數就是我們自定義的事件,狀態根據這個事件參數跳轉到不同的下一狀態。
- flowExecutionKey:這個隱藏域用來區分不同的流程實例,必須要加到表單中提交
release_second.jsp
跟release_first.jsp 類似。
就這樣,一個流程定義好了,可以通過:http://localhost:8080/viewgoodsclass 來打開這個流程
參考文檔
Spring Web Flow Basics
總結
以上是生活随笔為你收集整理的spring webflow getting start的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Linux安装winetim简单教程,在
- 下一篇: 由我国科学家研制的计算机,由我国科学家研
