2012-03-17 59 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