簡體   English   中英

Primefaces數據表和當前頁面不起作用

[英]Primefaces datatable and current page not working

我正在使用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。

實際行為與預期行為的示例

  • 用戶登陸頁面並查看第一頁。
  • 用戶切換到第二頁。 getCurrentPage-> 0錯誤預期1
  • 用戶切換到第三頁。 getCurrectPage-> 1錯誤預期2
  • 用戶切換到第一頁。 getCurrentPage-> 2錯誤預期0

我可以用什么方式解決這個問題? 謝謝

基數為0,但您的事件函數似乎正在運行。

嘗試在其他地方運行函數,然后在event =“ page”之外的地方運行。

我的意思是,當您的頁面為1(默認)並在第3頁上單擊時,它會輸出0(0 + 1 =第1頁),然后才輸出到第3頁。如果在第3頁上單擊現在為6,它將輸出2(2 + 1 =第3頁),僅在轉到第6頁之后。

即使使用oncomplete而不是onclick也會發生這種情況。 希望能有所幫助。

此問題是在PF 6.0和6.1中發現的一個錯誤,但是在當前版本(6.2)中,此問題已解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM