亲爱的 Spring 社区,
我们很高兴地宣布 Spring Web Flow (SWF) 1.0 RC3 (Release Candidate 3) 已经发布了。 下载 | 文档 | 变更日志
这个稳定版本包含错误修复和小的改进。 目前,我们预计这是 Spring Web Flow 1.0 最终版本之前的最后一个发布候选版本,最终版本即将到来。 值得注意的改进包括…
值得注意的改进
改进的流程异常层次结构。 总体而言,异常层次结构现在更清晰地组织了从流程定义访问失败 (FlowLocatorException) 到运行时流程执行失败 (FlowExecutionException) 和执行持久化失败 (FlowExecutionRepositoryException) 的各种失败类别。
改进了在 Portlet 环境中使用后退按钮的支持。 结合基于延续的仓库,SWF 支持在流程活动期间完全使用浏览器导航按钮(后退、刷新)在 Portlet 环境中。 当流程执行终止时,浏览器刷新将自动触发新的执行启动。
更简单的默认 JSF 视图映射。 现在,默认情况下,SWF 视图名称应与 JSF 视图 ID 完全对应。您将在 sellitem-jsf 示例中看到这个默认设置在起作用——请注意视图是如何像标准的 JSF 导航处理器一样引用,例如 "/priceAndItemCountForm.jsp"。 这允许自然支持其他 JSF 视图技术,例如 Facelets,并且对于 JSF 开发者来说是更自然的默认设置。 如果您需要自定义 SWF 到 JSF 视图映射,请将自定义 ViewIdMapper 插入到您的 FlowPhaseListener 中。
示例应用程序简化。 我们简化了 fileupload、flowlauncher、birthdate 和 sellitem 示例,以利用 Spring Web Flow 的最新功能和最佳实践。
可能影响用户的变更
在通往 1.0 最终版本的路上,1.0 RC3 中有一些可能影响用户的变更。 以下部分对此进行说明
FormAction 属性 "validateUsingValidatorMethod" 已被移除,以简化操作。 经验表明,此属性是新用户混淆的来源。 作为更好的替代方案,要在不进行验证的情况下执行数据绑定操作,只需从您的流程定义中调用 "bind" 操作方法。 当您需要分步 Validator 验证时,只需调用 "bindAndValidate" 或 "validate",并将 "validatorMethod" 属性设置为特定的验证器方法即可。 有关示例,请参阅 sellitem。
StateExceptionHandler 已更名为 "FlowExecutionExceptionHandler"。 这会影响自定义处理器实现。 要升级,只需实现新的接口;签名在逻辑上是相同的。
FlowExecutorImpl 的 "redirectOnPause" 属性现在接受布尔值,而不是 RedirectType 枚举。 从 1.0 RC2 开始,SWF 中只有一种重定向类型——流程执行重定向。 将此标志设置为 'true' 会在流程执行每次因进入视图状态而暂停时触发它。 有关示例,请参阅 Numberguess 或 sellitem。
--------
开始使用 Spring Web Flow 的最佳方法之一是查阅并逐步了解示例应用程序。 我们建议从一开始就查阅所有示例,并根据需要补充参考手册资料。1.0 RC3 版本附带了十个示例应用程序,每个都展示了一组不同的产品功能。 这些示例是
1. Phonebook - 展示大多数功能(包括子流程)的原始示例
2. Sellitem - 展示带有条件转换、流程执行重定向、会话范围和延续的向导
3. Flowlauncher - 展示启动和恢复流程的所有可能方式
4. Itemlist - 展示 REST 风格的 URL 和内联流程
5. Shippingrate - 展示 Spring Web Flow 与 Ajax 技术结合使用(感谢 Steven Devijver)
6. NumberGuess - 展示有状态 bean 和“单键”流程执行重定向。
7. Birthdate - 展示 Struts 集成
8. Fileupload - 展示多部分文件上传
9. Phonebook-Portlet - 在 Portlet 环境中的 Phonebook 示例
(请注意流程定义如何保持不变)
10. Sellitem-JSF - 在 JSF 环境中的 Sellitem 示例
祝您使用愉快!
Spring Web Flow 团队
Keith Donald
Erwin Vervaet
Juergen Hoeller
Colin Sampaleanu
Rob Harrop