2015-02-12 110 views
0

我試圖在「productId」的基礎上實現「添加到購物車」的概念,就像任何電子商務網站一樣。當我調用這個控制器時,它只添加用戶添加到列表中的最後一個元素,而不是所有產品列表。將所有元素添加到java中的另一個列表?

@RequestMapping("/addcart/{list.productId}") 
public String addCart(@PathVariable("list.productId") Integer productId, Model m, HttpSession session) { 

    List<Product> cartlist = productDao.findById(productId); 
    List<Product> useradd = new ArrayList<>(); 
    for (Product e : cartlist) { 
     useradded.add(e); 
    } 

    session.setAttribute("sessioncartview", useradded); 
    return "redirect:/"; 
} 

我發現只有最後一次添加的產品,並非全部產品列表。在「useradded」中。我想添加列表中的所有元素,即「useradded」對象,然後綁定會話。我怎樣才能做到這一點 ?

回答

0

因爲每次調用此方法時都會創建一個新的useradded列表。

而不是做

List<Product> useradd = new ArrayList<>(); 

你可以從會話中useradd且僅當它不存在創建一個新的實例。

List<Product> useradd = session.get("sessioncartview"); 
if (useradd == null) { 
    useradd = new ArrayList<>(); 
} 
+0

非常感謝@evanwong – 2015-02-12 05:48:06

相關問題