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では実行されません。