【问题标题】:Multiple tabs on same session scoped bean are interfering each other同一会话范围 bean 上的多个选项卡相互干扰
【发布时间】:2012-03-17 16:53:16
【问题描述】:

我有 JSF 2.0 电子商务应用程序。我正在使用 2 个会话范围的 bean:ProductBean 和 CartBean。 ProductBean 包含表示当前产品用户正在查看的产品实体。 CartBean 包含产品列表。 CartBean 有方法 addProduct(Product p)。使用多个标签时添加到购物车时遇到问题。这是场景:

  1. 用户访问产品页面:/product?id=111
  2. 用户打开另一个产品的新浏览器标签:/product?id=222
  3. 用户返回第一个选项卡并点击“添加到购物车” - 第二个产品 (id=222) 已添加到购物车。

这是添加到购物车命令按钮操作的代码:

#{cartBean.addProduct(productBean.product)}

我很清楚发生了什么。如何在多个选项卡上进行这项工作?

【问题讨论】:

    标签: jsf


    【解决方案1】:

    ProductBean request 设为作用域。如果您的 bean 是会话范围的,它们对所有请求都是全局的。同样,如果它们是应用程序范围的,它们对所有会话都是全局的。

    【讨论】:

    • CartBean 不需要在请求范围内。只有 ProductBean 需要请求范围。
    • @djmj 感谢您的澄清。已更新。
    • 请注意,您要链接到的旧 Java EE 5 教程处理旧 JSF 1.2。 OP 正在使用 JSF 2.0,您可以只在类上使用注释而不是冗长的 faces-config.xml。您似乎从未真正使用过 JSF,是吗?
    • @BalusC:如果我从未使用过 Java EE,我怎么知道请求范围?我知道基于注释的属性。我唯一的目的是提供 OP 可以查看的资源,以审查范围。不过,感谢您提醒使用旧教程。已更新。
    猜你喜欢
    • 2012-04-23
    • 2012-08-28
    • 2013-05-09
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多