2015-02-12 107 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

相关问题