【发布时间】:2017-03-19 14:51:20
【问题描述】:
我正在使用 Prime Faces 6.0。
我有一个带有 LazyDataModel 的数据表。用户可以使用内置分页器更改页面。 当用户从第一个页面切换到第二个页面时,我需要知道当前页面,我需要在客户端部分。
这是数据表的代码
<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。
实际行为与预期行为的示例
- 用户登陆页面并查看第一页。
- 用户切换到第二页。 getCurrentPage -> 0 预期错误 1
- 用户切换到第三页。 getCurrectPage -> 1 错误预期 2
- 用户切换到第一页。 getCurrentPage -> 2 错误预期 0
我可以通过什么方式解决这个问题? 谢谢
【问题讨论】:
标签: jsf primefaces jsf-2