2012-07-19 127 views
0

Im使用Mojarra 2.1.3,Netbeans 7.0.1,primefaces 3.2。JSF2.0 State_Saving_Method客戶端問題

我目前處於困境是否使用STATE_SAVING_METHOD客戶端或服務器。目前我將保存方法設置爲客戶端。這涉及到我對許多對象的可縮放性進行調整。並將暫態關鍵字放在無狀態的外觀會話bean上。

@ManagedBean 
@ViewScoped 
public class SaProductController implements Serializable { 
@EJB 
transient SaProductFacade saProductFacade; 
@EJB 
transient SaKeywordFacade saKeywordFacade; 
.... 

我的xhtml頁面有一個帶有分頁的primefaces數據表。第一次通過顯示數據表中的第一頁來加載它工作的頁面。但是,在點擊下一頁時,這行會引發NullPointerException錯誤。

data = saProductFacade.selectAll(first, pageSize); 

這是爲什麼?是否因爲saProductFacade @EJB屬性被聲明爲transient,並且在回發到同一頁面時被銷燬。無論如何,ViewScoped託管bean仍然活着。請幫忙,如何解決這個問題?還是我做錯了?

有關信息,如果將STATE_SAVING_METHOD設置爲服務器,則此功能完美。但瀏覽器後退按鈕的危險使我決定去客戶端狀態保存選項。此外,服務器上的內存限制也保證了客戶端狀態保存。

回答

0

僅供參考,對於初學者,我現在使用服務器狀態保存方法。如果用戶按下後退按鈕,我會使用會話變量來記住我在哪裏。通過這種方式,ViewScoped支持bean被重新創建並自動分頁到用戶上次查看的頁面。這樣我就可以將用戶重定向到他們最後一個可數據頁面的位置,然後他們使用GET HTTP請求導航到另一個頁面。