我有一個問題,讓我覺得我在做錯誤的方式。 我有一個sessionBean
與實體叫CashRegister
持有收銀機。當此屬性爲null
時,則表示沒有創建收銀機。同一SessionBeans與不同的州
我有一個viewScope豆的動作,在該方法GoToOrdersQueue
檢查收銀(從會話bean中獲得)是不是null
,然後重定向到某個頁面......如果收銀null
,它顯示一條消息說收銀機必須先創建。
在另一方面,我有一個customFilter
(實施javax.servlet.Filter
)多數民衆贊成檢查會話bean的收銀機是不是null
,允許繼續執行重定向頁面,如果收銀null
,然後重定向到上面寫着一個頁面:"Cannot see the page because the Cash register must be created first"
知道,我的問題是,我創建了收銀機,然後我打電話viewScoped
bean的方法GoToOrdersQueue
,當它檢查是否收銀不null
,結果是正確的.. .not null
因此它重定向到所需的頁面,但 ..當調用過濾器來檢查收銀機是否不是null
時,結果不正確!因爲會話bean擁有cash register
和null
!
這是我調用會話bean的方式的問題嗎?
在viewScoped
bean的方法GoToOrdersQueue
我祈求像這樣的SessionBean:
ControllerSession sessionbean = JsfUtil.findBean("controllerSession");
,其中方法findBean
聲明如下:
public static <T> T findBean(String beanName) {
FacesContext context = FacesContext.getCurrentInstance();
return (T) context.getApplication().evaluateExpressionGet(context, "#{" + beanName + "}", Object.class);
}
,在過濾我調用sessionbean
像這樣:
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession(false);
ControllerSession sessionbean = (ControllerSession) session.getAttribute("controllerSession");
爲什麼他們有不同的狀態(在那個特定的屬性),如果他們假設是同一個對象?我使用其他屬性,如登錄用戶,每次都能正常工作。
在此先感謝您的任何提示!
順便說一句,我使用的是tomcat 7.0.40,jsf 2.2和primefaces 3.5,但我認爲與此無關。
'controllerSession'的範圍是什麼?你確定你將bean設置成正確的會話嗎? – erencan
是的,它是sessionscoped,我用它來保存'登錄用戶'以及屬於用戶會話的其他內容。 – oriuken