我正在使用Spring MVC和hibernate构建一个Web应用程序。我正在努力扩大范围。例如,在同一界面上创建父节点和子节点需要在创建第一个子节点后重置子bean。 Spring MVC不允许从会话范围中删除bean。同时,跨越多个请求范围转移儿童是不切实际的。我需要一个会话范围。
我现在将Spring Web Flow视为一种解决方案。但是,它的文档很少,似乎完全依赖于xml配置。这两个功能似乎都表明它是一个较旧的,可能不太受支持的项目。
任何人都可以建议我是否应该花时间学习Spring Web Flow,或者建议与Spring MVC相关的替代解决方案。
答案 0 :(得分:6)
我现在花了一些时间。
我认为xml与注释相反的原因是设计。一旦有人围绕它,流程配置很简单,并导致非常快速的开发。
是的,它似乎处于维护模式,但设计稳固可靠,开发效率似乎非常高。学习曲线有点陡峭,特别是如果整合到一个现存的webapp中,但我在大约三天内启动并运行。
Webflow自己的文档不是很好,但链接here的教程非常好。
<强>更新强>
5个月后,我建立了一个完整的评估系统(即测试/考试系统)。我的背景是IT,我有心理学博士学位。
我制作的系统经过全面测试和压力测试。
webflow的优势。
缺点
由于所有对象在网页上呈现之前都是序列化的,因此如果将对象从flowState bean中取出,则必须非常小心如何缓存对象。
答案 1 :(得分:3)
Spring Web Flow似乎得到了维护,但在主动开发中却没有。我看到a handful of commits,主要是更新依赖版本和修复错误。
你认为流的配置只是XML是正确的,我认为这是这个老化的Spring项目的最大缺点。我搜索了DSL或动态构建器,但我没有找到任何东西。
话虽如此,我还是试一试。简单的流 - 甚至动态和继承流 - 都是可能的。此外,支持表单和POST-Redirect-GET Pattern实现可能对您有用。当您使用浏览器后退按钮时,最后一种技术可防止表单重新提交。
答案 2 :(得分:0)
自从我看到“primefaces”之后,我一直在看webflow(过去的一天,大约16个小时)。
Webflow提供不同类型的状态并转换到这些状态。状态可以有一个与之关联的视图(HTML页面或JSP页面 - &gt; primefaces in here)。每个JSP页面都是模板,就像PHP只使用java和xhtml一样。使用primefaces组件,客户端和服务器之间的交互“似乎”几乎是自动化的(快速开发的优点)。 Webflow还提供流变量,这是一个java数据对象。流变量可以具有流的生命周期,并由视图和模板使用。 Webflow允许您控制所有状态之间的转换。
然而,我认为这是我停止研究的地方。首先,如果需要流量控制在客户端上构建它,那么使用带有Spring MVC(@RequestMapping)的AngularJS的webflow优于客户端Web应用程序的优势是什么。如果你想要一个在会话生命周期内存在的变量,那么创建一个javascript变量,但是如果变量只需要存在于服务器上并且你想使用模板,那么webflow似乎是一个理想的选择。
如果您需要一个有状态的webapp,那么检查Spring HATEOAS类型概念(将状态作为参数传递给客户端)可能是个好主意,并且该参数指的是有限的时间可用性变量。编码较少,似乎更符合互联网模式。