Spring Web Flow 项目团队刚刚完成了 Web Flow 2 的第七个维护版本发布。这是我们迄今为止最好的版本,距离 Web Flow 2.0.0 最终版本发布正好一年。现在,随着 2.0.x 系列变得成熟和稳定,我们正开始开发下一个主要版本。在这篇文章中,我想回顾过去一年,并提供一些关于我们未来方向的信息。
Web Flow 2 的采用情况
Web Flow 2 去年发布后,我们在发布的头两个月内看到了 50,000 次下载。自那以后,我们的论坛流量稳步增长,并且我们在几个令人兴奋的行业中看到了新的采用。许多人知道 Spring Web Flow 是 Orbitz 在线旅游平台的基础,该平台目前支持 ebookers.com 和 nwa.com 等网站。如果你一直关注 2009 年 NBA 季后赛,你可能还会发现 Web Flow 也是 nba.com 的重要组成部分。
我们过去一年的工作
和所有 Spring 项目一样,Web Flow 的成功取决于反馈。过去一年中,与客户和 SpringSource 支持工程师的现场互动推动了我们在 2.0.x 版本上的大部分工作。社区在报告 bug、贡献补丁、突出使用场景以及普遍讨论项目如何继续改进的方法方面也表现出色。
我想快速回顾一下自 2.0.0.RELEASE 以来的一些具体改进
-
流 URL 映射的配置简化和约定
这一项改进在 2.0.5 版本中应用,由客户反馈以及 Dan Allen 的 JSFOne 演示文稿推动,将典型的 webflow-config.xml 文件大小减少了一半,配置行数约为 20 行。正如您所看到的,这是通过对流定义应用通配符搜索,并结合基于流 ID 将流定义绑定到 URL 的约定来实现的。
-
支持显式视图状态模型绑定
这一改进最初是作为对此安全公告的回应提供给 SpringSource 客户的,随后在 2.0.3 版本中发布,它允许您按视图状态限制允许的模型绑定集合。这以此处所示的声明式风格实现。
Post 后重定向的改进
Web Flow 最有用的特性之一是 post 后重定向模式 可以直接工作,这是实现良好后退按钮支持和受控导航的关键先决条件。2.0.5、2.0.6 和 2.0.7 版本都对此支持进行了后续改进。最近的改进确保了在所有场景下,包括存在绑定或验证错误时,重定向行为都能得到一致的应用。您可以在 ViewState.java 的 doEnter 和 doResume 方法中查看控制此模式执行的源代码。
支持流操作
社区找到了方法,可以将文件流式传输回参与流程的客户端。对此的文档支持在 Web Flow 2.0.0 中被忽略了,并在 2.0.6 版本中添加。
类型转换改进
为视图状态模型绑定提供动力的系统在 2.0.2 到 2.0.6 版本中进行了大量改进。该系统提供了 Spring DataBinder 的所有独特功能,例如支持泛型集合元素的转换,并且与 Java PropertyEditors 相比,提供了更简单的类型 Converter API。
除了这些核心改进之外,过去一年中我们还看到了一些有趣的 Web Flow 集成,例如 Grails 1.1、ZK RIA 框架、Terracotta、IceFaces、SpringSource 的 富 Web 培训课程、IntelliJ、Skyway Software 以及第一本 Web Flow 2 书籍。
未来方向
我们为未来制定了很多计划。技术细节我将在另一时间介绍,但我想总结一下这项工作的几个关键主题。首先,Web Flow 3 将是第一个要求 Java 5 的版本,因为它将以 Spring Framework 3 作为基础。其次,您可以期待引入 @Flow 模型,该模型补充了 Spring MVC 的无状态 @Controller 模型,并允许将有状态的 Web 流定义为 POJO。第三,您可以期待 Spring JavaScript 和 Spring Faces 这两个源自 Web Flow 2 工作的模块,都被提升为顶级的 Spring 项目。Spring JavaScript 将成为 Spring 官方的 Ajax 集成项目,而 Spring Faces 将成为 Spring 官方的 JavaServerFaces 集成项目。
我期待下周在 SpringOne 与大家见面,讨论您应用该项目的经验以及我们未来的方向!