# 2. 最新更新 ## 2.1. Spring Web 流 2.5 这个版本提供了一条到 Spring Framework5 的升级路径,而这条路径又需要 Java8+、 Servlet 3.1、 Hibernate 5、Tiles3.有关更多详细信息,请参见[Spring Framework wiki](https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-Spring-Framework-5.x)。[样品库](https://github.com/spring-projects/spring-webflow-samples)已升级到 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 章,* 系统设置 *](system-setup.html)。 还请参见[Booking-MVC](https://github.com/spring-projects/spring-webflow-samples/tree/master/booking-mvc)和[预订脸](https://github.com/spring-projects/spring-webflow-samples/tree/master/booking-faces)示例,这些示例已更新为使用所有 Java 配置。 ### 2.2.2. Spring MVC 闪存范围集成 当一个流结束时,在将属性保存在 Spring MVC 的闪存范围中供控制器访问后,它现在可以重定向到 Spring MVC 控制器。 见[第 11.8 节,“将流输出保存到 MVC 闪存范围”](spring-mvc.html#spring-mvc-flash-output)。 ### 2.2.3.部分 JSR-303 Bean 验证 流定义可以通过 View State 和 Transition 元素支持的 Validation-Hints 属性在模型上应用部分验证。 见[该部分被称为“部分验证”。](views.html#view-validation-jsr303-partial)。 ### 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 版本。升级后的项目将需要确保``元素被包括在其 Spring 配置中。 ### 2.2.8.异议 此版本删除*Spring.js*。该版本包括整个 * Spring-js-resources* 模块,包括*Spring.js*和 * Spring-dojo.js* 以及捆绑的 Dojo 和 CSS 框架。同样不推荐的是来自*spring-js*模块的`SpringJavascriptAjaxHandler`。*spring-js*的其余部分,例如`AjaxHandler`,`AjaxTilesView`,将在未来的版本中折叠成*spring-webflow*。 OGNL 支持现在已被弃用。 ## 2.3. Spring Web 流 2.3 ### 2.3.1.在页面上嵌入流 默认情况下,WebFlow 在进入每个视图状态时都会进行客户端重定向。这使得不可能在页面或模态对话框中嵌入流并执行多个视图状态,而不会导致整页刷新。Web Flow 现在支持以“嵌入式”模式启动一个流。在这种模式下,在 Ajax 请求期间,流可以转换到其他视图状态,而无需客户端重定向。见[第 11.7 节,“在页面上嵌入流”](spring-mvc.html#spring-mvc-embedded-flow)和[第 13.6 节,“在页面上嵌入流”](spring-faces.html#spring-faces-embedded-mode)。 ### 2.3.2.支持 JSR-303 Bean 验证 对 JSR-303 Bean 验证 API 的支持现在可以在 Spring MVC 中提供的等效支持的基础上获得。有关更多详细信息,请参见[第 5.10 节,“验证模型”](views.html#view-validate)。 ### 2.3.3.流管理的持久性上下文传播 从 Web 流 2.3 开始,管理的流`PersistenceContext`将自动扩展(传播)到子流,假设子流也具有启用的特性。见[第 7.3 节,“流管理的持久性和子流”](flow-managed-persistence.html#flow-managed-persistence-propagation)。 ### 2.3.4.Portlet2.0 资源请求 现在已经添加了对 Portlet2.0 资源请求的支持,从而支持部分呈现的 Ajax 请求。可以在 JSP 页面中使用``标记来准备此类请求的 URL。服务器端处理类似于一个动作和一个呈现请求的组合,但合并在一个请求中。与呈现请求不同,来自资源请求的响应仅包括来自目标 Portlet 的内容。 ### 2.3.5.自定义对话管理器 现在,``元素提供了一个 conversation-manager 属性,该属性接受对 Conversationmanager 实例的引用。 ### 2.3.6.在相同的状态下重定向 默认情况下,只要当前请求不是 Ajax 请求,在保持相同视图状态时,Web 流就会执行客户端重定向。这在表单验证失败后很有用。点击刷新或返回不会导致浏览器警告。因此,这种行为通常是可取的。然而,一个新的流执行属性使得禁用它成为可能,这在某些特定于 JSF 应用程序的情况下也是必要的。见[第 13.7 节,“在同一状态下重定向”](spring-faces.html#spring-faces-redirect-in-same-state)。 ### 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 流”](spring-faces.html#spring-faces-webflow-config)。请注意,只支持 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 Faces[Showcase](https://src.springframework.org/svn/spring-samples/webflow-primefaces-showcase)处找到其他示例,这是[spring-samples](https://src.springframework.org/svn/spring-samples)存储库中的一个 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 视图。它提供了一个 \标记以及几个 EL 函数。有关更多详细信息,请参见[Section 13.9, “Using the Spring Security Facelets Tag Library”](spring-faces.html#spring-faces-security-taglib)。 ### 2.4.3. Spring JavaScript 更新 #### 弃用资源 servlet 从 Spring 3.0.4 开始, Spring 框架包括对 ResourcesServlet 的替换。请参阅 Spring 框架文档了解定制 MVC 名称空间的详细信息,特别是新的[“资源”](http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-static-resources)元素。 #### Dojo1.5 和 Dojox 捆绑的定制 Dojo 版本升级到了 1.5 版本。它现在包括 Dojox。 请注意,通常鼓励应用程序准备自己的定制 Dojo 构建以优化性能,这取决于 Dojo 的哪些部分通常一起使用。有关示例,请参见 Spring Web 流用于准备自己的定制 Dojo 构建的[scripts](https://src.springframework.org/svn/spring-webflow/branches/spring-webflow-2.2-maintenance/spring-js-resources/scripts/dojo)。 #### 两个 Spring JS 工件 `spring-js`工件被一分为二--新工件(`spring-js-resources`)包含客户端资源(.js、.css 等),而现有工件(`spring-js`)仅包含服务器端 Java 代码。 准备自己的定制 Dojo 构建的应用程序现在有一个选项,可以避免将`spring-js-resources`和`Spring.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 容器上成功地进行了测试。