Spring Webflow VS AngularJS

我知道有人问过这个问题,但我似乎没有找到合适的答案.所以想再次构建问题.

我们需要构建一个响应式应用程序,用于创建客户的订单.

我开始研究Spring4 Webflow,甚至创建了一个示例披萨应用程序[感谢Spring in Action],因为我们需要我们的应用程序具有很高的可扩展性,这看起来像是一种方法.

我们遇到的问题是 – 我们在应用程序中的其他地方使用AngularJS Spring MVC / REST.
对于WebFlow,看起来我们需要使用spring形式,即Spring完成绑定,以及angularJS和Spring WebFlow之间的其他冲突.有没有办法将Spring WebFlow AngularJS一起使用,我们利用角度充分潜力但仍然使用WebFlow来模仿会话行为?

createPizza.jsp

<form:form commandName="pizza">
      <input type="hidden" name="_flowExecutionKey" 
          value="${flowExecutionKey}"/>

订单flow.xml

<view-state id="createPizza" model="flowScope.pizza">
        <on-entry>
          <set name="flowScope.pizza" 
              value="new com.springinaction.pizza.domain.Pizza()" />

          <evaluate result="viewScope.toppingsList" 
              expression="T(com.springinaction.pizza.domain.Topping).asList()" />
        </on-entry>
        <transition on="addPizza" to="showOrder">
          <evaluate expression="order.addPizza(flowScope.pizza)" />
        </transition>
        <transition on="cancel" to="showOrder" />
    </view-state>

最佳答案 我不认为SWF曾被设计用作SPA(单页应用程序). SWF“状态”标记始终调用服务器并刷新整个页面以重新呈现视图.这与AngularJS存在根本冲突.

(可选)您可以在SWF中启用ajax请求,并在单个视图状态标记内仅呈现部分html片段.但现在的问题是,您将把所有业务逻辑放在一个视图状态标记中(在我看来)显着降低了使用SWF的优势并违反了SRP原则,但该选项存在.

请参阅此示例,详细说明SWF ajax请求的工作方式:

How to include a pop-up dialog box in subflow

另外,请参阅文档以了解如何启用ajax请求/部分片段:

http://docs.spring.io/spring-webflow/docs/current/reference/htmlsingle/#spring-js-ajax

点赞