Apache MyFaces JSF2.0 bug:getStateHelper()。put不保存任何东西?

时间:2012-04-28 19:44:06

标签: java java-ee jsf-2 myfaces mojarra

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时,目标是将页码提前一。但是,当在MyFaces中运行它时,eval()调用将适用于即时请求生命周期,但是下一个请求,它将返回0.如果我将null而不是0,我得到一个NPE。

pageNumber状态需要携带组件的生命周期,而不仅仅是当前请求。我究竟做错了什么?这段代码在Mojarra下运行正常,但在MyFaces中运行不正确。

1 个答案:

答案 0 :(得分:2)

事实证明,它实际上是MyFaces中的一个错误。我在Apache TomEE beta2中运行它。它包括MyFaces 2.1.2。我用2.1.7取代了罐子,问题就解决了。

感谢您的期待!