tom*_*szf 29 java spring servlets spring-mvc
我想用Spring实现一个购物车,所以我需要Cart在会话中保存一个对象(它有像products,paymentType和deliveryType这样的属性).我试图用bean创建它并将属性"scope"设置为"session",但它只是不起作用,我应该在我的控制器或Cart类中使用一些额外的注释吗?任何使用示例都非常有用:-)在此先感谢.
Boz*_*zho 34
@Component
@Scope("session")
public class Cart { .. }
然后
@Inject
private Cart cart;
如果在Web上下文中声明它(dispatcher-servlet.xml),它应该工作.另一种选择是使用原始会话并将您的购物车对象放在那里:
@RequestMapping(..)
public String someControllerMethod(HttpSession session) {
    session.setAttribute(Constants.CART, new Cart());
    ...
    Cart cart = (Cart) session.getAttribute(Constants.CART);
}
ste*_*son 13
如果您将购物车直接注入控制器,问题可能会发生,因为您的控制器是单一作用域(默认情况下),这比您注入的bean更广泛.这篇优秀的文章概述了您正在尝试做的四种方法:http://richardchesterwood.blogspot.co.uk/2011/03/using-sessions-in-spring-mvc-including.html.
以下是解决方案的快速摘要:
@scope("session")在控制器级别上使用),并在控制器中只有一个购物车实例.<aop:scoped-proxy/>.所有方法都有其优点和缺点.我通常使用选项2或4.选项4实际上非常简单,是我在Spring中记录的唯一方法.
| 归档时间: | 
 | 
| 查看次数: | 63859 次 | 
| 最近记录: |