我使用的是Prime Faces 6.0。
我有一个带有LazyDataModel的数据表。用户可以使用内置分页器更改页面。 当用户从第一页切换到第二页时,我需要知道currentPage,我需要在客户端部分。
这是数据表的代码
<p:dataTable
id="listingsTable"
value="#{listingsLazyDataModel}"
var="actualAd"
paginator="true"
rows="#{applicationScopedBean.advertisingsPaginationSize}"
lazy="true"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
rowsPerPageTemplate="10,20,30"
paginatorPosition="bottom"
widgetVar="listingsTableDesktop"
first="#{searchAdvertisingModel.currentPage*applicationScopedBean.advertisingsPaginationSize}">
...
...
<p:ajax event="page" listener="#{listingsController.pageChanged}" oncomplete="pageChangedOnDetails(PF('listingsTableDesktop'))" />
...
---
</p:dataTable>
这是js代码
function pageChangedOnDetails(listingsTableDesktop){
console.log(listingsTableDesktop.paginator.getCurrentPage());
}
问题是getCurrentPage()方法返回上一页。不是实际的。仅供参考,页面为0。因此第一页是第0页。
实际行为与预期行为的示例
我可以通过哪种方式解决这个问题? 谢谢
答案 0 :(得分:0)
基数为0但你的事件函数很快就会运行。
尝试在其他地方运行您的功能,然后使用event =&#34; page&#34;。
我的意思是,当您的页面为1(默认)并且您在第3页上单击时,它会输出0(0 + 1 =第1页),并且仅在它转到第3页之后。如果您现在单击第6页,它输出2(2 + 1 =第3页),并且仅在它转到第6页之后。
即使使用oncomplete而不是onclick,也会发生这种情况。希望它有所帮助。
答案 1 :(得分:0)
此问题是PF 6.0和6.1中发现的错误,但使用当前版本(6.2)时,此问题已解决