【问题标题】:Apache MyFaces JSF2.0 bug: getStateHelper().put doesn't save anything?Apache MyFaces JSF2.0 错误:getStateHelper().put 不保存任何东西?
【发布时间】:2012-05-09 03:56:11
【问题描述】:

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 中却不行。

【问题讨论】:

  • 是 \@ViewScoped... 为简洁起见,我在 \@SessionScoped 上进行了尝试。结果一样...

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


【解决方案1】:

原来它实际上是 MyFaces 中某个地方的一个错误。我在 Apache TomEE beta2 中运行它。它包括 MyFaces 2.1.2。我用 2.1.7 替换了罐子,问题自行解决了。

感谢收看!

【讨论】:

    猜你喜欢
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    相关资源
    最近更新 更多