2012-03-17 44 views
0

我有JSF 2.0电子商务应用程序。我使用2个会话作用域bean:ProductBean和CartBean。 ProductBean拥有代表当前产品用户正在查看的产品实体。 CartBean拥有产品清单。 CartBean有方法addProduct(Product p)。使用多个标签页时,我遇到添加到购物车的问题。这里的情景:同一会话范围的bean上的多个选项卡互相干扰

  1. 用户浏览产品页面:/产品ID = 111
  2. 用户打开用于其他产品的新的浏览器选项卡:?/产品ID = 222
  3. 用户可以追溯到第一片和点击“添加到购物车” - 第二个产品(id = 222)已添加到购物车。

这里有添加到购物车的commandButton动作的代码:

#{cartBean.addProduct(productBean.product)} 

很清楚我是怎么回事。我如何使这个工作在多个标签上?

回答

1

使ProductBeanrequest放大。如果你的bean是会话范围的,它们对所有请求都是全局的。同样,如果它们是应用程序范围的,它们对所有会话都是全局的。

+2

CartBean不需要被请求作用域。只有ProductBean需要请求范围。 – djmj 2012-03-17 19:50:25

+0

@djmj感谢您的澄清。更新。 – blackcompe 2012-03-18 00:36:11

+0

请注意,您要链接到的旧Java EE 5教程处理旧的JSF 1.2。 OP使用的是JSF 2.0,您可以在该类上使用注释而不是verbose faces-config.xml。你似乎没有真正使用JSF,是吗? – BalusC 2012-03-18 01:15:07