`

Spring WebFlow(一)

阅读更多

Spring WebFlow的关注点的层次比Sping MVC 或者是 Structs 更高。不只是关注于如何e构建Web界面,更加关注于流程,也就是Flow。

在Spring WebFlow里面,每个Flow都包括了几个步骤,称为‘State’。 每一个步骤里面都有一个View,View里面的事件处理由State来执行。这些事件会触发一些事务,这些事务会根据之前设置好的配置,跳转到其他的State上面去。

在Spring WebFlow中,flow的设置都是用XML文件来表示。
Spring WebFlow的XML定义:
Flow标签:<flow/>是根元素,所有的定义从这个元素开始。
State标签:<view-state/>用来表示一个拥有View的State。在这个标签里面,指定了用于描述View的文件的位置。这个位置是约定俗成的,由设置的id来指定。比如<view-state id=”enterBookDetails”/>,那么这个State的View的描述文件为enterBookDetails.xhtml。如果这个Flow的定义文件存放在/WEB-INF/xxxx/booking/目录下面,那么这个View的定义文件就是/WEB-INF/xxxx/booking/enterBookDetails.xhtml。
transaction标签:<transaction/>是view-state的子标签,定义一个页面转向,比如<transaction on=”submit” to=”reviewBooking”/>,则是说明了当触发submit事件的时候,转到下面一个state,转向的state的id为reviewBooking。
end-state标签:<end-state/>这个表示flow的出口,如果某个transaction指向了一个end-state标签,表示这个flow已经结束。一个flow可以有多个end-state标签,表示多个出口。
一个完整的XML文件例子:
<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">
    <view-state id="enterBookingDetails">
          <transition on="submit" to="reviewBooking" />
    </view-state>
    <view-state id="reviewBooking">
          <transition on="confirm" to="bookingConfirmed" />
          <transition on="revise" to="enterBookingDetails" />
          <transition on="cancel" to="bookingCancelled" />
    </view-state>
    <end-state id="bookingConfirmed" />
    <end-state id="bookingCancelled" />
</flow>

Actions:一个Spring WebFlow里面很重要的概念,从上面可以看出,view-state、transaction、end-state标签只是表示Flow的流程,页面跳转,里面没有说明业务逻辑的操作。Action就是用来调用这些业务逻辑操作的。
在下面几个点中,我们可以调用Action:
1.Flow开始的时候
2.进入State的时候
3.View进行渲染的时候
4.transaction执行的时候
5.state退出的时候
6.Flow结束的时候

evaluate:这个标签可能是Action里面最常使用的标签,用Spring定义的表达式来确定一个Action去调用哪个Spring Bean的方法,然后返回值、返回类型是什么。
例如:<evaluate expression="bookingService.findHotels(searchCriteria)" result="flowScope.hotels" result-type="dataModel"/>,这里面就说明了这个action需要调用bookingService这个bean的findHotels这个方法,传入的参数是searchCriteria这个bean,返回的结果是flowScope(这个是所属的Flow的数据模型)里面的hotels这个数据模型(这个后面会提到)。

一个完整的包含Action的xml文件例子
<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">
    <input name="hotelId" />
        <on-start>
            <evaluate expression="bookingService.createBooking(hotelId,currentUser.name)" result="flowScope.booking" />
        </on-start>
        <view-state id="enterBookingDetails">
            <transition on="submit" to="reviewBooking" />
        </view-state>
        <view-state id="reviewBooking">
            <transition on="confirm" to="bookingConfirmed" />
            <transition on="revise" to="enterBookingDetails" />
            <transition on="cancel" to="bookingCancelled" />
        </view-state>
        <end-state id="bookingConfirmed" />
        <end-state id="bookingCancelled" />
</flow>

分享到:
评论
2 楼 TheUniqueGirl 2013-06-05  
简单明了,对入门很有帮助,本来对webflow一窍不通,看了一下,大概明白cas里面的login-webflow.xml的配置了。
1 楼 aiafei0001 2013-04-26  
写的不错,完全懂了,好厉害的美眉!

相关推荐

    spring webflow的一个例子

    Spring WebFlow 是一个用于构建高度交互式和流程导向型Web应用程序的框架,它扩展了Spring MVC的功能,专注于管理用户交互的流程。这个例子中的"CartApp3"很可能是一个基于Spring WebFlow实现的购物车应用程序。 在...

    spring webflow 官方中文版权威指南PDF

    Spring WebFlow 是一个用于构建高度交互式Web应用的框架,它扩展了Spring MVC的功能,专注于管理应用程序中的流程和状态。本官方中文版权威指南PDF详细介绍了如何使用Spring WebFlow来构建动态、流程导向的Web应用。...

    spring web flow reference 2.4.0

    &lt;dependency org="org.springframework.webflow" name="spring-webflow" rev="2.4.0"/&gt; ``` ##### 1.7 夜间构建和里程碑发布 为了使用Spring Web Flow的夜间构建或里程碑版本,可以通过在Maven配置文件中添加如下...

    Spring Web Flow权威指南.pdf

    书中重点讲解Web流、流定义语言、流执行、流的测试以及自定义扩展等精髓内容,并结合使用Spring WebFlow 1开发的实例来向读者说明如何将其实际应用到项目中。尤其弥足珍贵的是,作者从框架设计者角度深入阐述了...

    Spring Web Flow权威指南

    根据提供的标题、描述和标签,本篇文章将围绕“Spring Web Flow”这一主题展开,深入探讨其核心概念、架构原理及应用场景等内容。 ### Spring Web Flow概述 Spring Web Flow是Spring Framework的一部分,它为Web...

    Spring Web Flow API(Spring Web Flow 开发文档).CHM

    Spring Web Flow 。 官网 Spring Web Flow API。 Spring Web Flow 开发文档。

    Spring Web Flow 介绍.rar

    Spring Web Flow 是一个基于Spring框架的开源库,它专注于构建复杂的Web应用程序中的导航逻辑和状态管理。这个库旨在解决传统MVC框架在处理多步骤交互流程时的局限性,例如用户填写表单、购物车流程、注册或登录过程...

    spring web flow权威指南

    《Spring Web Flow权威指南》是针对Spring Web Flow框架的一本深度解析书籍,旨在帮助开发者全面理解和熟练运用这一强大的web应用程序开发工具。Spring Web Flow是一种用于构建动态web交互体验的轻量级框架,它允许...

    spring webflow 例子

    在这个“spring webflow 例子”中,我们将深入探讨Spring Web Flow如何帮助我们构建一个网上书店应用。 首先,Spring Web Flow的核心概念包括流程定义、状态和转换。流程定义是整个流程的蓝图,它由一系列状态...

    spring web flow入门

    DOCTYPE webflow PUBLIC "-//SPRING//DTD WEBFLOW//EN" "http://www.springframework.org/dtd/spring-webflow.dtd"&gt; &lt;webflow id="bookflight" start-state="obtainTripInfo"&gt; ``` 在这个示例中,`bookflight`...

    spring-webflow-reference

    Spring Web Flow是一个用于定义、执行和管理Web应用中的复杂流程的框架。它是Spring Framework的一部分,用于构建支持多步骤流程的Web应用。在Spring Web Flow中,流程是由一系列状态(state)、转换(transition)...

    Spring Web Flow CartApp4

    业务的逻辑涉及到数据的获取、传递、保存,相关的业务功能函数的调用等内容,这些功能的实现都可用 Java 代码来完成,但定义 Spring Web Flow 的语法与 Java 是无关的,这就要求 Spring Web Flow 提供与 Java 代码的...

    spring-webflow2.3.0源码

    Spring Webflow 是Spring框架的一个扩展,它专注于处理Web应用程序中的流程管理。Spring Webflow 2.3.0是其一个重要版本,它提供了强大的状态管理和转移动作,使得开发者能够优雅地设计复杂的用户交互流程。在本文中...

    Spring-WebFlow入门中文文档

    &lt;webflow&gt; &lt;!-- 状态定义 --&gt; &lt;!-- 转换定义 --&gt; &lt;/webflow&gt; ``` 在这个例子中,流程从 "selectFlight" 状态开始,用户在该状态下选择航班,然后通过 "select" 事件触发转换到 "enterDetails" 状态...

    spring webflow 参考

    spring webflow 1.0 速查参考手册,

    spring web flow 官方文档

    Spring Web Flow是Spring Framework的一个扩展模块,专门设计用于处理复杂的、多步骤的web应用程序流程。版本2.30是其一个重要的迭代,包含了多项更新与优化,为开发者提供了更加强大且灵活的工作流管理能力。本文将...

    Spring WebFlow Demo

    Spring WebFlow 是一个用于构建强大、可维护的Web应用程序的框架,尤其适用于管理用户交互流程。它允许开发者定义和执行用户界面导航流程,这些流程可以跨越多个HTTP请求,提供了对状态和流程控制的强大支持。在...

    spring web flow demo

    本教程分析了 Spring Web Flow 2.0 的技术要点,并且通过创建一个示例应用程序,展示了 Spring Web Flow 2.0 的基本知识。 开始之前 关于本教程 本教程通过一个简化的购物车应用,介绍了如何使用 Spring Web Flow ...

    spring webflow入门基础

    ### Spring Webflow 入门基础 #### 购物车用例 首先,我们通过一个购物车用例来深入理解Spring Web Flow的应用场景及其优势。购物车作为一个典型的电子商务应用场景,涉及用户选择商品、查看购物车内容、确认订单...

    spring webflow升级-从1.0 到 2.0

    Spring WebFlow (SWF) 是一款强大的流程管理框架,它使得创建复杂的Web应用程序变得更为简单。随着技术的发展,从 SWF 1.0 升级到 SWF 2.0 成为了必要之举。尽管两者之间的核心概念保持不变,但在语法、工具和配置等...

Global site tag (gtag.js) - Google Analytics