Spring Web Flow下一代版本的第一个里程碑版本发布

版本发布 | Keith Donald | 2007年8月28日 | ...

尊敬的Spring社区:

我们很高兴地宣布,Spring Web Flow下一代版本的第一个里程碑版本现已可用。Spring Web Flow 2.0 M1 引入了几个主要的新功能,包括对流管理持久化上下文的支持、对 Java Server Faces 的改进支持、完整的统一表达式语言 (EL) 支持,以及更全面的示例 Web 应用程序

 

Spring Web Flow 2.0 是一个用于开发 Java Web 应用程序控制器的下一代框架。该框架提供了一个统一的运行时环境,用于在各种环境中执行无状态有状态的客户端交互。

Web Flow 2.0 版本的目标

如今,大多数应用程序开发人员使用 Spring Web Flow 来实现线性页面流程(例如向导),方法是将 Web Flow 插件到他们的“基础”Web 框架(如 Spring MVC)中。此类页面流程具有线性的导航规则,是有状态的,并构成 Web 应用程序功能的动态、自包含模块。一个很好的例子是贷款申请流程:Web Flow 的独特流程定义语言为实现这些类型的流程提供了自然的编程模型。

Spring Web Flow 2.0 的总体目标是从其当前状态(主要用于实现线性向导的框架)正式转变为其一直旨在成为的目标:一个通用应用程序控制器引擎,用于为所有类型的客户端交互提供动力。此类交互包括向导、无状态“RESTful”交互以及“Web 2.0”应用程序中经常出现的更细粒度的非线性/异步交互。

Spring Web Flow 2.0 将为 Spring 社区提供一个统一的应用程序控制器框架和运行时环境,适用于执行所有类型的客户端交互,并能够集成各种视图呈现技术和 UI 组件模型。此统一的运行时环境将能够一致地应用管理检测、安全、AJAX 和托管持久性等独特功能。

查看完整的Spring Web Flow 2.0 路线图

Web Flow 2.0 M1 新特性和值得注意的改进

第一个 2.0 版本里程碑在通往 2.0 正式版之路中引入了几个主要的新功能。这些功能在下面进行了描述。

使用 JPA 和 Hibernate 的流管理持久化上下文

Spring Web Flow 2.0 M1 引入了对使用 Hibernate 和 JPA 的流管理持久化上下文的支持。此版本中包含的新酒店预订示例应用程序演示了此功能。以下是它在预订示例上下文中的工作原理

  • 当新的酒店预订流程开始时,会自动为您创建一个持久化上下文。
  • 在您遍历流程时,持久化上下文会自动用于所有数据访问操作。您无需担心查找与流程绑定的 EntityManager 实例,或以任何方式管理它。
  • 当您授权预订时,对托管持久实体的所有更改都会自动提交并刷新回数据库。如果您选择取消预订,则不会提交任何更改。

此酒店预订流程的图形化Spring IDE视图如下所示

预订流程 

对 Java Server Faces (JSF) 的改进支持

Spring Web Flow 2.0 M1 引入了Spring Faces模块(spring-faces-2.0-m1.jar),这是一个与 Web Flow 发行版一起提供的组件,其中包含对使用 Java Server Faces 开发 Web 应用程序的组织的一流支持。现有的 Web Flow + JSF 集成已分解到此项目中,并且此项目将成为所有未来 JSF 集成工作的主要位置。

Spring Faces 模块为 Spring 社区提供了一个专门的项目,用于探索其他 JSF 集成机会。2.0 M1 中的初始工作引入了与Ext的集成,这是一个流行的 Javascript GUI 小部件框架。提供了一些轻量级的 JSF UI 组件,它们封装了丰富的 Ext 小部件的渲染。我们采用的方法允许 Ext 小部件装饰标准 JSF 组件,添加类似桌面的外观和额外的 UI 行为(如客户端验证)。2.0 M1 中提供了以下 Ext 组件装饰器

  • 一个日期验证器组件,它对日期文本字段执行丰富的客户端验证,并带有一个外观精美的日期选择器控件。
  • 一个文本验证器,它对自由格式的文本输入字段执行丰富的客户端验证。
  • 一个数字验证器,它对数字文本字段执行丰富的客户端验证。

日期验证器控件的屏幕截图(也用于酒店预订示例应用程序)如下所示

 

Ext 控件外观很棒,并且由于所有 UI 行为都在客户端执行,因此 UI 的响应能力非常出色。作为 Spring Faces 模块的一部分,我们将在未来的 Web Flow 版本里程碑中进一步支持此领域。

拥有一个专用的 Spring Faces 模块还可以简化在 JSF 环境中设置 Spring Web Flow 的过程。在 2.0 M1 之前,开发人员需要手动修改faces-config.xml来设置样板 Spring/SWF 集成管道。使用 2.0 m1,只需将 spring-faces-2.0-m1.jar 包含在您的类路径中即可自动完成此设置。

统一表达式语言 (EL) 支持

此版本中的另一个新功能是对统一 EL 的完全支持,它为 Spring Web Flow 当前默认使用的基于 OGNL 的表达式解析器提供了一种替代方案。现在建议在 JSF 环境中使用统一 EL,并且它将在未来的里程碑中成为 JSF 开发人员的默认设置。

以下显示了在酒店预订流程定义中使用的 EL 表达式示例:

 

上面的“id”表达式计算存储在 Flow Scope 中的当前酒店标识符。请注意,此处不需要任何显式的 flowScope 前缀。开发人员只需按名称引用变量,ELExpressionEvaluator 就会通过搜索各种范围来处理变量解析。这使得 Web Flow 定义中的托管 bean 引用与用于模型绑定表达式的 JSF 视图中的引用 100% 一致。例如,请参阅以下来自 bookingForm.xhtml 视图的代码段

 

2.0 版本说明

Spring Web Flow 2.0 需要 Spring 2.0 或更高版本以及 Java 1.4 或更高版本。

Spring Web Flow 2.0 将尽可能地保持与 1.0.x 基于 XML 的流程定义语言的向后兼容性。预计在未来的 Web Flow 2.x 里程碑中,某些 SWF SPI 将发生变化,因为 Web Flow 将发展成为一个完整的控制器框架。

Spring Web Flow 2.0 的未来里程碑将引入新的方言,用于在真正的编程语言中定义流程,从而提供比当前基于 XML 的流程定义语法更强大的替代方案。基于 POJO 的 Java 流程定义语法正在开发中,基于 Groovy 的方法也是如此。此外,还将引入用于实现 RESTful 和 CRUD 流程的高级流程方言。由于 Web Flow 定义 API 和执行运行时与任何具体的流程定义语法是分开的,因此我们自然可以引入新的语法,以不同的方式在运行时设计应用程序控制器。

对于 JSF 用户,Spring Web Flow 2.0 和 Spring Faces 可以在 JSF 1.1 和 JSF 1.2 上运行。Spring Faces 模块中的 UI 组件库独立于 Web Flow 运行时,也可以与 JSF 的默认导航处理程序一起使用。

Spring Web Flow 2.0 将继续提供对 Servlet 2.4 或更高版本、Portlet 1.0 或更高版本以及 JUnit 3.8.1 或更高版本环境的完全支持。

Spring Web Flow 2.0 将继续在 Struts 1.2 或更高版本和 Spring MVC 2.0 或更高版本环境中运行,并且到 2.0 正式版时也将可用作独立的 Web 应用程序控制器框架。

获取 Spring 新闻通讯

与 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获得支持

Tanzu Spring 在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部