尊敬的 Spring 社区:
Spring Web Flow 是 Spring 社区的一个产品,专注于在 Web 应用程序中编排用户界面流程。
此版本包含许多改进和一些令人兴奋的新功能。我们认为这是迄今为止最稳定的版本,并且最终使 Spring Web Flow 1.0 正式版路线图功能完整。Spring Web Flow 1.0 正式版将于下周发布,更改极少。在此期间,我们鼓励您测试 1.0 RC4,以帮助在大型 1.0 推出之前发现任何剩余问题。
请注意,此版本中有一些会影响用户更改。1.0 RC3 或更早版本的用户应查看升级指南,其中详细介绍了这些更改。
1.0 RC4 中的新内容和值得注意的内容是一个令人兴奋的列表,包括:
新内容和值得注意的内容
作为 Spring Web Flow 1.0 正式版之前的最终候选版本,Spring Web Flow 1.0 RC4 引入了强大的新功能,例如渲染操作 (1)、评估操作 (2)、设置操作 (3)、闪存范围 (4)、流执行属性 (5) 和始终在暂停时重定向 (6)。它提供了增强的文档、更好的流定义验证、智能默认值和完整的自定义 Spring 2.0 配置模式 (7),用于配置流执行引擎。
- (1) 渲染操作在渲染响应之前执行应用程序行为。渲染操作在视图状态被要求进行可渲染视图选择时被调用,在进入时或由重定向或浏览器刷新按钮触发的刷新时被调用。以下示例显示了一个渲染操作,它在渲染结果视图之前执行电话簿搜索。
<view-state id="displayResults" view="searchResults">
<render-actions>
<bean-action bean="phonebook" method="search">
<method-arguments>
<argument expression="flowScope.searchCriteria"/>
</method-arguments>
<method-result name="results"/>
</bean-action>
</render-actions>
<transition on="newSearch" to="enterCriteria"/>
<transition on="select" to="browseDetails"/>
</view-state>
- (2) 评估操作根据流执行状态评估表达式。表达式(默认情况下基于 OGNL)可以针对从流执行的根 RequestContext 可访问的任何对象,包括任何范围中的对象,例如流范围。以下示例显示了一个评估操作,它在“game”流范围 bean 上调用“makeGuess”方法
<action-state id="makeGuess">
<evaluate-action expression="flowScope.game.makeGuess(requestParameters.guess)">
<evaluation-result name="guessResult"/>
</evaluate-action>
<transition on="CORRECT" to="showAnswer"/>
<transition on="*" to="enterGuess"/>
<transition on-exception="java.lang.NumberFormatException" to="enterGuess"/>
</action-state>
- (3) 设置操作设置范围类型(例如流范围)中的属性值。属性可以是顶级属性或嵌套属性路径中的属性。以下示例显示了一个设置操作,它将闪存范围中的“fileUploaded”属性设置为“true”。
<action-state id="uploadFile">
<action bean="uploadAction" method="uploadFile"/>
<transition on="success" to="selectFile">
<set attribute="fileUploaded" scope="flash" value="true"/>
</transition>
</action-state>
- (4) Flash scope 是一种新的作用域类型,用于在重定向和任何视图刷新期间持久化属性。 当发出事件以从视图转换出去时,flash scope 将被清除。以下完整的流程定义示例展示了如何使用 flash scope 将“fileUploaded”属性暴露给 selectFile 视图状态,以便在成功上传后显示成功消息。
<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-1.0.xsd">
<start-state idref="selectFile"/>
<view-state id="selectFile" view="fileForm">
<transition on="submit" to="uploadFile"/>
</view-state>
<action-state id="uploadFile">
<action bean="uploadAction" method="uploadFile"/>
<transition on="success" to="selectFile">
<set attribute="fileUploaded" scope="flash" value="true"/>
</transition>
</action-state>
</flow>
- (5) 流程执行属性允许您设置可以影响流程执行行为的自定义属性。以下示例显示了一条指令,用于在 Portlet 环境(其中重定向通常不适用)中将“alwaysRedirectOnPause”属性设置为 false。
<flow:executor id="flowExecutor" registry-ref="flowRegistry">
<flow:execution-attributes>
<flow:alwaysRedirectOnPause value="false"/>
</flow:execution-attributes>
</flow:executor>
- (6) “在暂停时始终重定向” 为您提供默认的 POST+REDIRECT+GET 行为,无需特殊编码。现在,默认情况下,当进入视图状态时,会自动发出重定向。这会触发对流程执行 URL 的刷新,该 URL 在会话处于活动状态时保持稳定。
- (7) 新的 Spring 2.0 配置方言极大地简化了系统配置,并提供了强大的验证和工具支持。现在,配置 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:flow="http://www.springframework.org/schema/webflow-config"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/webflow-config
http://www.springframework.org/schema/webflow-config/spring-webflow-config-1.0.xsd">
<!-- 启动新的流程执行并恢复现有执行。 -->
<flow:executor id="flowExecutor" registry-ref="flowRegistry"/>
<!-- 创建此应用程序的流程定义注册表 -->
<flow:registry id="flowRegistry">
<flow:location path="/WEB-INF/flows/**-flow.xml"/>
</flow:registry>
</beans>
有关这些功能的更多信息,请参见参考手册。Spring Web Flow 1.0 RC4 进一步完善了参考文档,提供了 70 页关于 SWF 用法的资料。该手册可在线获取,格式为 HTML 和 PDF。
入门
开始使用 Spring Web Flow 的最佳方法之一是查看并演练示例应用程序。我们建议从一开始就查看所有示例,并根据需要补充参考手册材料。发行版附带十个示例应用程序,每个应用程序都演示了一组不同的产品功能。
- 电话簿 - 演示大多数功能(包括子流程)的原始示例
- 销售商品 - 演示带有条件转换、流程执行重定向、自定义文本字段格式和延续的向导
- 流程启动器 - 演示启动和恢复流程的所有可能方法
- 项目列表 - 演示 REST 样式的 URL 和内联流程
- 运费 - 演示 Spring Web Flow 与 Ajax 技术的结合使用
- 数字猜测 - 演示有状态 bean、评估操作和“单键”流程执行重定向。
- 出生日期 - 演示 Struts 集成
- 文件上传 - 演示多部分文件上传、设置操作和 flash scope
- 电话簿-Portlet - Portlet 环境中的电话簿示例(请注意流程定义没有更改)
- 销售商品-JSF - JSF 环境中的销售商品示例
要构建示例应用程序以进行快速评估,只需
- 解压 spring-webflow-1.0-rc4.zip 发行版存档
- 访问 projects/spring-webflow/build-spring-webflow 目录
- 执行“ant dist”目标。
- 在“target/artifacts”目录中查看每个示例的可部署 .war 文件以及已展开的 war 目录。
分别参见“release readme.txt”和“projects/spring-webflow/spring-webflow-samples/readme.txt”,了解发行版存档内容和示例的更多信息。
所有示例项目都是 Spring IDE 项目,可以直接导入到 Eclipse 中。
感谢所有支持此发行版的人。Spring Web Flow 1.0 现在……终于……即将到来。
尽情享受!
Spring Web Flow 团队