快速业务通道

Spring Web Flow 2.0入门 - 用subflow实现添加商品到购物车功能 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
tate id="viewCart" view="viewCart" >   <on-render>    <evaluate expression="productService.getProducts()" result="viewScope.products"/>   </on-render>   <transition on="submit" to="viewOrder"/>   <transition on="addToCart" to="addProductToCart"/> </view-state> <subflow-state id="addProductToCart" subflow="addToCart">   <transition on="productAdded" to="viewCart" /> </subflow-state>

在 /WEB-INF/flows 目录下添加 addToCart.xml

清单 31 中 subflow-state 元素的 subflow 属性即指明了这个被调用的 flow 的 id 为“ addToCart ”,现在就要添加addToCart flow的定义。

清单 32 addToCart.xml

<?xml version="1.0" encoding="UTF-8"?> <flow xmlns="http://www.springframework.org/schema/webflow"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://www.springframework.org/schema/webflow    http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">   <on-start>    <set name="requestScope.productId" value="requestParameters.productId"/>   </on-start>   <action-state id="addToCart">    <evaluate expression="cart.addItem(productService.getProduct(productId))"/>    <transition to="productAdded"/>   </action-state>   <end-state id="productAdded"/> </flow>

addToCart flow 主要由一个 action-state 构成,完成添加商品到购物车的功能, addToCart flow 的实现需要有输入参数,即 productId 。在本示例中是通过请求参数来传递,通过 requestParameters 来获取该数值。这里还要注意到清单 32 中的 end-state 的 id 为“ productAdded ”,与清单 31 中 subflow-state 中的 transition元素的on属性的名称是对应的。

在 webflow-config.xml 中添加 addToCart.xml 的位置

新增加的 flow 不要忘记在 flow-registry 中注册。

清单 33 flow-registry 中注册 addToCart

<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">   <webflow:flow-location path="/WEB-INF/flows/shopping.xml" id="shopping"/>   <webflow:flow-location path="/WEB-INF/flows/addToCart.xml" id="addToCart"/> </webflow:flow-registry>

Spring Web Flow 2.0入门 - 用subflow实现添加商品到购物车功能(3)

时间:2011-02-01 IBM 吕焱飞

修改 viewCart.jsp 页面

最后就可以来看在视图中如何显示相关的信息,并触发相应的 webflow 事件,见清单 34:

清单 34 完整的 viewCart.jsp 的代码

<h1>View Cart</h1> <h2>Items in Your Cart</h2> <c:choose> <c:when test="${empty cart.items}"> <p>Your cart is empty.</p> </c:when> <c:otherwise> <table border="1" cellspacing="0"> <tr> <th>Item</th> <th>Quantity</th> <th>Unit

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号