# 2. 最新更新

# 2.1. Spring Web 流 2.5

这个版本提供了一条到 Spring Framework5 的升级路径,而这条路径又需要 Java8+、 Servlet 3.1、 Hibernate 5、Tiles3.有关更多详细信息,请参见Spring Framework wiki (opens new window)样品库 (opens new window)已升级到 Spring Web 流 2.5.

从 2.5 开始,不再有spring-js模块。该模块中的类已被保留,但已转移到spring-webflow模块中的新包中。spring-js-resources模块作为一个可选模块是可用的,必须显式地包含该模块。

此版本需要 JSF2.2 或更高版本。

# 2.2. Spring Web 流 2.4

这个版本需要 JDK1.6.

# 2.2.1.基于 Java 的配置

Web Flow 现在支持基于 Java 的系统配置替代方案。参见更新的第 10 章,* 系统设置 *

还请参见Booking-MVC (opens new window)预订脸 (opens new window)示例,这些示例已更新为使用所有 Java 配置。

# 2.2.2. Spring MVC 闪存范围集成

当一个流结束时,在将属性保存在 Spring MVC 的闪存范围中供控制器访问后,它现在可以重定向到 Spring MVC 控制器。

第 11.8 节,“将流输出保存到 MVC 闪存范围”

# 2.2.3.部分 JSR-303 Bean 验证

流定义可以通过 View State 和 Transition 元素支持的 Validation-Hints 属性在模型上应用部分验证。

该部分被称为“部分验证”。

# 2.2.4. Hibernate 支持

除了 Hibernate 3 之外,HibernateFlowExecutionListener现在还支持 Hibernate 4.

截至 2.4.4,HibernateFlowExecutionListener也与 Hibernate 5 起作用。

# 2.2.5.磁贴 3 支持

现在AjaxTilesView除了支持 tile2.2 外,还支持 tile3.

# 2.2.6.最低 JSF2.0 要求

Spring Web Flow 不再支持 Java ServerFaces 版本 1.2 和更早版本,如果你还没有这样做,你将需要升级到 JSF2.0 或更高版本。此外,在这个版本中,已经删除了以前通过 JSF1.2 提供的用于渐进 Ajax 增强的 Spring 面组件。

???

# 2.2.7.Portlet API2.0 和 JSF2.0 支持

Spring Web Flow2.2 中引入的内部 Portlet 集成已经进行了升级,以实现 JSF2.0 的兼容性。Portlet 环境不支持一些更高级的 JSF2.0 特性,例如部分状态保存,但是,现有的应用程序现在可以升级到所需的最低 JSF 版本。升级后的项目将需要确保<faces:resources>元素被包括在其 Spring 配置中。

# 2.2.8.异议

此版本删除Spring.js。该版本包括整个 * Spring-js-resources* 模块,包括Spring.js和 * Spring-dojo.js* 以及捆绑的 Dojo 和 CSS 框架。同样不推荐的是来自spring-js模块的SpringJavascriptAjaxHandlerspring-js的其余部分,例如AjaxHandlerAjaxTilesView,将在未来的版本中折叠成spring-webflow

OGNL 支持现在已被弃用。

# 2.3. Spring Web 流 2.3

# 2.3.1.在页面上嵌入流

默认情况下,WebFlow 在进入每个视图状态时都会进行客户端重定向。这使得不可能在页面或模态对话框中嵌入流并执行多个视图状态,而不会导致整页刷新。Web Flow 现在支持以“嵌入式”模式启动一个流。在这种模式下,在 Ajax 请求期间,流可以转换到其他视图状态,而无需客户端重定向。见第 11.7 节,“在页面上嵌入流”第 13.6 节,“在页面上嵌入流”

# 2.3.2.支持 JSR-303 Bean 验证

对 JSR-303 Bean 验证 API 的支持现在可以在 Spring MVC 中提供的等效支持的基础上获得。有关更多详细信息,请参见第 5.10 节,“验证模型”

# 2.3.3.流管理的持久性上下文传播

从 Web 流 2.3 开始,管理的流PersistenceContext将自动扩展(传播)到子流,假设子流也具有启用的特性。见第 7.3 节,“流管理的持久性和子流”

# 2.3.4.Portlet2.0 资源请求

现在已经添加了对 Portlet2.0 资源请求的支持,从而支持部分呈现的 Ajax 请求。可以在 JSP 页面中使用<portlet:resourceURL>标记来准备此类请求的 URL。服务器端处理类似于一个动作和一个呈现请求的组合,但合并在一个请求中。与呈现请求不同,来自资源请求的响应仅包括来自目标 Portlet 的内容。

# 2.3.5.自定义对话管理器

现在,<flow-execution-repository>元素提供了一个 conversation-manager 属性,该属性接受对 Conversationmanager 实例的引用。

# 2.3.6.在相同的状态下重定向

默认情况下,只要当前请求不是 Ajax 请求,在保持相同视图状态时,Web 流就会执行客户端重定向。这在表单验证失败后很有用。点击刷新或返回不会导致浏览器警告。因此,这种行为通常是可取的。然而,一个新的流执行属性使得禁用它成为可能,这在某些特定于 JSF 应用程序的情况下也是必要的。见第 13.7 节,“在同一状态下重定向”

# 2.3.7.样本

建立分布所包括的样本的过程已经简化。 Maven 可用于在一个步骤中构建所有样本。Eclipse 设置包含源代码引用以简化调试。

可按以下方式获取更多样本:

mkdir spring-samples
cd spring-samples
svn co https://src.springframework.org/svn/spring-samples/webflow-primefaces-showcase
cd webflow-primefaces-showcase
mvn package
# import into Eclipse

mkdir spring-samples
cd spring-samples
svn co https://src.springframework.org/svn/spring-samples/webflow-showcase
cd webflow-showcase
mvn package
# import into Eclipse

# 2.4. Spring Web 流 2.2

# 2.4.1.JSF2 支持

# 全面的 JSF2 支持

Spring Web Flow2.2 版本以 2.1 为基础,增加了对核心 JSF2 特性的支持,2.1 中不支持的以下特性现在可用:部分状态保存、JSF2 资源请求、处理和 JSF2Ajax 请求。在这一点上,对 JSF2 的支持被认为是全面的,尽管并不涵盖所有的 JSF2 特性--排除的主要是与 Web 流提供的核心价值重叠的特性,例如与导航和状态管理有关的特性。

有关重要的配置更改,请参见第 13.3 节,“配置用于 JSF 的 Web 流”。请注意,只支持 Sun Mojarra2.0.3 或更高版本的部分状态保存。它还没有得到 MyFaces 的支持。这是因为 MyFaces 在如何存储组件状态方面不那么容易定制。我们将与 MyFaces 合作提供这种支持。同时,你将需要在web.xml中使用javax.faces.PARTIAL_STATE_SAVING上下文参数来禁用 Apache MyFaces 的部分状态保存。

# 带原始表面组件的旅行样本

演示 Spring Web 流和 JSF 支持的主要 Spring 旅行示例现在构建在 JSF2 和来自 PrimeFaces 组件库的组件上。请核对一下分配中的订货面样品。

可以在 Spring WebFlow-Prime FacesShowcase (opens new window)处找到其他示例,这是spring-samples (opens new window)存储库中的一个 SVN 存储库。使用以下命令检查并构建:

svn co https://src.springframework.org/svn/spring-samples/webflow-primefaces-showcase
	cd webflow-primefaces-showcase
	mvn package
	

# 2.4.2. Spring 安全 Facelets 标记库

Spring 新的安全标记库可用于 JSF2.0 或 JSF1.2Facelets 视图。它提供了一个 <authorize>标记以及几个 EL 函数。有关更多详细信息,请参见Section 13.9, “Using the Spring Security Facelets Tag Library”

# 2.4.3. Spring JavaScript 更新

# 弃用资源 servlet

从 Spring 3.0.4 开始, Spring 框架包括对 ResourcesServlet 的替换。请参阅 Spring 框架文档了解定制 MVC 名称空间的详细信息,特别是新的“资源” (opens new window)元素。

# Dojo1.5 和 Dojox

捆绑的定制 Dojo 版本升级到了 1.5 版本。它现在包括 Dojox。

请注意,通常鼓励应用程序准备自己的定制 Dojo 构建以优化性能,这取决于 Dojo 的哪些部分通常一起使用。有关示例,请参见 Spring Web 流用于准备自己的定制 Dojo 构建的scripts (opens new window)

# 两个 Spring JS 工件

spring-js工件被一分为二--新工件(spring-js-resources)包含客户端资源(.js、.css 等),而现有工件(spring-js)仅包含服务器端 Java 代码。

准备自己的定制 Dojo 构建的应用程序现在有一个选项,可以避免将spring-js-resourcesSpring.js直接放在其 Web 应用程序的根下面。

# 客户端资源移至 meta-inf/web-resources

捆绑的客户机资源(.js、.css 等)已从其先前位于META-INF下的位置移到META-INF/web-resources。这种变化对于应用程序是透明的,但是当使用 Spring 3.0.4 中提供的新的资源处理机制时,将导致更简单和更安全的配置。

# 2.4.4.JSF Portlet 支持

# Portlet API2.0 和 JSF1.2 支持

在 Spring 以前的版本中,对 JSF Portlet 的 Web 流支持依赖于用于 JSF 实现的 Portlet 桥,并且被认为是实验性的。 Spring Web Flow2.2 基于其自身的内部 Portlet 集成,增加了对 JSF Portlet 的支持,该集成以 Portlet API2.0 和 JSF1.2 环境为目标。有关更多详细信息,请参见???。 Spring Web Flow Travel JSF Portlet 示例已经在 Apache Pluto Portal 容器上成功地进行了测试。