2012-04-28 64 views
0

MyFaces的,似乎在此組件被忽略了我的電話,以getStateHelper.put():Apache MyFaces JSF2.0 bug:getStateHelper()。put不保存任何東西?

public class BFTableComponent extends UINamingContainer { 
... 
    private void setCurrentPageNumber(int currentPageNumber) { 
     getStateHelper().put(PropertyKeys.currentPageNumber, currentPageNumber); 
    } 

    public int getCurrentPageNumber() { 
     return (Integer) getStateHelper().eval(PropertyKeys.currentPageNumber, 0); 
    } 

public void nextPage() { 
    setCurrentPageNumber(getCurrentPageNumber() + 1); 
    updateCurrentPage(); 
} 

public void previousPage() { 
    setCurrentPageNumber(getCurrentPageNumber() - 1); 
    updateCurrentPage(); 
} 

... 
} 

正如你所看到的,在前端組件調用下一頁,我們的目標是通過一個推進頁碼。但是,在MyFaces中運行時,eval()調用將適用於立即請求生命週期,但下一個請求將返回0.如果我將null替換爲0,則獲得NPE。

pageNumber狀態需要在組件的生命週期中進行,而不僅僅是當前的請求。我究竟做錯了什麼?此代碼在Mojarra下運行良好,但不在MyFaces中運行。

+0

scope = session? – esej 2012-04-28 20:12:17

+0

是\ @ViewScoped ...爲簡潔起見,我在\ @SessionScoped上試過它。同樣的結果... – 2012-04-28 20:27:24

回答

2

原來,這實際上是MyFaces中某處的錯誤。我在Apache TomEE beta2中運行這個。它包括MyFaces 2.1.2。我用2.1.7替換了罐子,問題解決了。

感謝您的期待!