2016-02-17 36 views
0

我正在製作購物車項目。如何將多個商品添加到購物車而不會覆蓋以前的商品

當我將其他物品添加到購物車時,它會覆蓋購物車中的上一個物品。

Item類

private int productId; 
private String brand; 
private String productName; 
private double unitPrice; 
private int quantity; 
private String mainPicture; 
private double totalPrice; 
//then getters and setters. 

ShoppingCart類

//method to add to cart 
public List<Item> addToCart(int productId, String brand, String productName, 
     double unitPrice, int quantity, String mainPicture) { 

    Item cartItems = new Item(); 
    double totalPrice = 0.0; 
    totalPrice = quantity*unitPrice; 
    cartItems.setProductId(productId); 
    cartItems.setBrand(brand); 
    cartItems.setProductName(productName); 
    cartItems.setUnitPrice(unitPrice); 
    cartItems.setQuantity(quantity); 
    cartItems.setMainPicture(mainPicture); 
    cartItems.setTotalPrice(totalPrice); 
    cart.add(cartItems); 
    getCalculatedOrderTotal(); 

    return cart; 
} 

的Serlvet代碼

List<Item> shoppingCart = cart.addToCart(productId, brand, productName, unitPrice, quantity, mainPicture); 
session.setAttribute("shoppingCart", shoppingCart); 

jsp代碼

<c:forEach items="${shoppingCart}" var="cartItems"> 
 
    <td id="shoppingTd">${cartItems.productName}</td> 
 
</c:forEach>

我需要能夠對許多商品添加到購物車沒有覆蓋在車前一個項目。

+0

你可以顯示方法的正文getCalculatedOrderTotal() –

回答

0

將購物車封裝在單獨的類中。

在你應該從會話中檢索購物車對象的servlet代碼,如果不存在的話 - 那麼創建:

... 
HttpSession session = request.getSession(); 
shoppingCart = (ShoppingCart) session.getAttribute("shoppingCart"); 

if(shoppingCart == null) { 
    shoppingCart = new ShoppingCart(); 
} 
... 

// update stored data 

session.setAttribute("shoppingCart", shoppingCart); 

然後你就可以更新存儲的數據。否則每次創建新的。

+0

我試過了,它沒有工作@Aleksey Bykov –

+0

在任何情況下,如果你保持購物車的對象在會話中,它必須從會話。您選擇該項目並重寫會話屬性,從而丟失以前的項目。 –

相關問題