0

MyFacesは、このコンポーネントでの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();
}

...
}

ご覧のとおり、フロントエンドコンポーネントがnextPageを呼び出すときの目標は、ページ番号を1つ増やすことです。ただし、これをMyFacesで実行すると、eval()呼び出しは即時のリクエストライフサイクルで機能しますが、次のリクエストでは0が返されます。0ではなくnullを指定すると、NPEが取得されます。

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

4

1 に答える 1

2

実際には、MyFaces のどこかでバグが発生していたことが判明しました。これを Apache TomEE beta2 で実行していました。MyFaces 2.1.2 が含まれていました。jar を 2.1.7 に置き換えたところ、問題は解決しました。

ご覧いただきありがとうございます。

于 2012-04-28T20:52:44.640 に答える