簡體   English   中英

延遲加載primefaces組件

[英]Lazy loading in primefaces component

我在從實體到dataScroller的延遲加載時遇到問題。

這是來自my.xhtml批量my.xhtml

<h:form>
  <p:dataScroller value="#{userBean.lazyModel}" var="user" chunkSize="10" lazy="true"> 
  <f:facet name="loader">
    <p:commandButton type="button" value="More" icon="ui-icon-circle-triangle-s"/>
  </f:facet>

  <h:panelGrid columns="2" style="width:100%" columnClasses="logo,detail">
    <p:outputPanel>
    <h:panelGrid columns="2" cellpadding="5">
    <h:outputText value="Id:"/>
    <h:outputText value="#{user.id}" style="font-weight: bold"/>

    <h:outputText value="name:"/>
    <h:outputText value="#{user.name}" style="font-weight: bold"/>

  </h:panelGrid>
</p:outputPanel>
</h:panelGrid>
</p:dataScroller>

這是LazyDataModel規范

 private LazyDataModel<User> lazyModel; 
   @PostConstruct
    public void init() {
        this.lazyModel = new LazyDataModel<User>() {
            private static final long serialVersionUID = 1L;

            @Override
            public List<User> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
                List<User> data = userService.getUsersFromTo(0 , first + pageSize);  
                this.setRowCount(data.size());
                return data;
            }
        };
    }

    public LazyDataModel<User> getLazyModel() {
        return lazyModel;
    }

一切都應該像在Facebook中無限滾動一樣工作。 但有一個問題。 我有10個用戶,向下滾動后又有10個用戶,但是它們與以前的用戶名相同(ID名稱等。)我嘗試對其進行調試。 一切似乎都正常。 加載函數中返回的數據包含正確的數據...任何人都遇到相同的問題,或者我在某個地方錯了嗎?

這不應該嗎

userService.getUsersFromTo(0 , first + pageSize); 

寧願

userService.getUsersFromTo(first , first + pageSize); 

在第一種情況下,您的前十個用戶始終是相同的,但是每一步返回的用戶數量都會增加,這可能是導致您出現問題的原因

暫無
暫無

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

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