我有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更新之后调用的回调。 什么可能是错的?
指针好吗?
答案 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中访问它