我使用httpsession来保存对象购物车。如果我正常访问页面,Spring MVC会使用当前会话,这很好。
问题是我使用AJAX来调用控制器和Spring MVC中的动作来创建一个新会话。会话中的属性将被删除:
@RequestMapping(value = "/product/cart/add", method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Integer addItemToCart(@RequestBody ProductDTO product, HttpSession session){
logger.info(session.isNew());
CartDTO cart = (CartDTO) session.getAttribute("CART");
if(cart == null){
cart = new CartDTO();
}
cart.addItem(product, 1);
session.setAttribute("CART", cart);
logger.info(cart.toString());
return cart.getCart().size();
}
我试图找到导致这种情况的原因,但我们无法弄明白。