Spring Web Flow 项目团队刚刚完成了 Web Flow 2 的第7次维护版本。这是我们迄今为止最好的版本,距离 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 以来的一些具体改进
-
Flow URL 映射的配置简化和约定
这一改进在 2.0.5 中应用,并受到客户反馈以及Dan Allen 的 JSFOne 演示的推动,将典型的 webflow-config.xml 文件大小削减了一半,减少到大约 20 行配置。正如您所见,这是通过结合基于 flow id 将 flow 定义绑定到 URL 的约定,应用对 flow 定义的通配符搜索来实现的。
-
支持显式的 view-state 模型绑定
这一改进首先作为对本安全公告的回应提供给 SpringSource 客户,随后在 2.0.3 中发布,它允许您按 view-state 限制允许的模型绑定集合。这是以此处所示的声明式风格实现的。
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 中添加。
类型转换改进
为支持 view-state 模型绑定的系统进行了大量改进,这些改进在 2.0.2 到 2.0.6 版本中实现。该系统提供了 Spring DataBinder 的所有独特功能,例如支持转换泛型集合的元素,并且相比 Java PropertyEditors 具有更简单的类型转换器 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 flow 定义为 POJO。第三,您可以期待 Spring JavaScript 和 Spring Faces,这两个从 Web Flow 2 工作中发展而来的模块,都将被提升为顶级 Spring 项目。Spring JavaScript 将成为 Spring 官方的 Ajax 集成项目,而 Spring Faces 将成为 Spring 官方的 JavaServerFaces 集成项目。
我期待下周在 SpringOne 与大家见面,讨论你们应用该项目的经验和我们未来的方向!