1

我有一个primefaces 数据表page change event我需要知道使用客户端 API的当前页码。

我在用,

<p:ajax event="page" oncomplete="myFunction(usersWidget);"/>

在 myFunction() 我有

debugger;
console.log(usersWidget.paginator.getCurrentPage());

问题是,在分页器oncomplete上设置新页面之前调用页面事件内部的回调(PrimeFaces.widget.Paginator.setPage)。我用调试器跟踪了这一点。

话虽如此,我会在 oncomplete 回调中获得我所在的上一个页码而不是当前页码。

如果在单击页面链接后设置页面后我可以得到回调,我就会知道当前页面。

编辑:文档说它是在 ajax 完成后和 DOM 更新后调用的回调。那么可能有什么问题呢?

请指点?

4

1 回答 1

2

很奇怪,导致页面更新后调用 oncomplete ......

oncomplete="myFunction();" 传递参数如何调用?

您可能会以这种方式传递旧对象(带有过时的信息)... usersWidget 无论如何都是全局变量... ans 应该存在于您的 js 文件中

由于客户端 api 似乎没有与正确的值同步

作为一种解决方法,您可以尝试像这样从服务器传递页面值

DataTable dataTable = (DataTable) 
     FacesContext
         .getCurrentInstance()
         .getViewRoot()
         .findComponent("someOformID:someTableId");

或尝试,而不是上面的行,

PageEvent.getPage(); //PageEvent is an argument to you listener
myPageHolder = dataTable.getPage();

将此值放入 bean 属性并将其放入 xhtml 中的某个隐藏值中,而不是使用更新该隐藏值p:ajax update并从 js 中访问它

于 2012-12-02T09:06:22.717 回答