PrimeFaces获取页面更改事件的当前页码

时间:2012-12-01 13:01:43

标签: javascript jsf-2 primefaces datatables

我有primefaces datatable。  我需要使用客户端API知道page change event上的当前页码。

我正在使用,

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

在myFunction()里面我有

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

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

话虽如此,我会得到我之前的页码,而不是当前的页码,在完整的回调中。

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

编辑:文档说它是在ajax完成之后和DOM更新之后调用的回调。 什么可能是错的?

指针好吗?

1 个答案:

答案 0 :(得分:2)

奇怪的是,在页面更新后调用oncomplete ...

在没有传递参数的情况下调用oncomplete="myFunction();" 怎么样?

你可能正在传递旧对象(有过时的信息)......无论如何,usersWidget是全局变量...... ans应该出现在你的js文件中

因为似乎客户端api没有与正确的值同步

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

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

or try instead of the line above PageEvent.getPage() (page event is an argument to you listener)
myPageHolder = dataTable.getPage();

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