快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20

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

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

商品已经有列表了,接下来就要增加把商品放入购物车的功能,在本示例中用 subflow 来实现这一功能,操作步骤如下:

实现 Cart 和 CartItem 两个业务类

在 shopping.xml 中添加配置

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

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

修改 viewCart.jsp 页面

实现 Cart 和 CartItem 两个业务类

CartItem 表示存放于购物车中的条目,主要记录相应商品及商品数量,同时不要忘记实现 java.io.Serializable 接口,见清单 29:

清单 29 CartItem 类

package samples.webflow; import java.io.Serializable; public class CartItem implements Serializable {    private static final long serialVersionUID = 8388627124326126637L;    private Product product;    private int quantity;    public CartItem(Product product, int quantity) {      this.product = product;      this.quantity = quantity;    }    public int getTotalPrice() {      return this.quantity * this.product.getPrice();    }    public void increaseQuantity() {      this.quantity++;    }    /*省略getter和setter*/ }

除去相应的属性外, CartItem 可根据商品的数量算出该商品的总价格( getTotalPrice ),也可通过 increaseQuantity 增加商品数量。

Cart 是购物车的实现类,其同样要实现 java.io.Serializable 接口,但它没有像 ProductService 一样成为由 Spring IoC 容器管理的 Bean ,每个客户的购物车是不同的,因此不能使用 Spring IoC 容器默认的 Singleton 模式。见清单 30:

清单 30 Cart 类

package samples.webflow; /* 省略 import 语句 */ public class Cart implements Serializable {    private static final long serialVersionUID = 7901330827203016310L;    private Map<Integer, CartItem> map = new HashMap<Integer, CartItem>();    public List<CartItem> getItems() {      return new ArrayList<CartItem>(map.values());    }    public void addItem(Product product) {      int id = product.getId();      CartItem item = map.get(id);      if (item != null)        item.increaseQuantity();      else        map.put(id, new CartItem(product, 1));    }    public int getTotalPrice() {      int total = 0;      for (CartItem item : map.values())        total += item.getProduct().getPrice() * item.getQuantity();      return total;    } }

Cart 主要实现三个业务函数, getItems 用于获取当前购物车里的物品, addItem 用于向购物车添加商品, getTotalPrice 用于获取购物车里所有商品的总价格。

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

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

在 shopping.xml 中添加配置

在 shopping flow 开始时必须分配一个 Cart 对象,由于要调用 subflow ,这个 Cart 对象应存放于 conversationScope 中。同时要添加一个 subflow-state 用于执行添加商品到购物车的任务。

清单 31 shopping.xml 中添加的配置

<var name="mycart" class="samples.webflow.Cart"/> <on-start>   <set name="conversationScope.cart" value="mycart"></set> </on-start> <view-s

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号