2012-04-28 8 views
0

MyFacesのは、このコンポーネントでgetStateHelper.put()に私の呼び出しを無視しているように見える:フロントエンドコンポーネントはNEXTPAGEを呼び出したときApache MyFaces JSF2.0バグ: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(); 
} 

... 
} 

あなたが見ることができるように、目標は1でページ番号を進めることです。しかし、これをMyFacesで実行すると、eval()コールは即時リクエストライフサイクルで機能しますが、次のリクエストでは0が返されます.0の代わりにnullを設定すると、NPEが取得されます。

pageNumber状態は、現在の要求だけでなく、コンポーネントの存続期間中に実行する必要があります。私は間違って何をしていますか?このコードはMojarraではうまく動作しますが、MyFacesではうまく動作しません。

+0

scope = session? – esej

+0

は\ @ViewScopedでした...簡潔にするために私は\ @SessionScopedで試しました。同じ結果... –

答えて

2

実際、MyFacesのどこかにバグがありました。私はApache TomEE beta2でこれを実行していました。 MyFaces 2.1.2が含まれています。私はjarsを2.1.7に置き換え、問題はそれ自身修正されました。

ありがとうございます!

関連する問題