2014-12-15 4 views
0

У меня проблема с ленивой загрузкой с моего объекта на мой dataScroller.Lazy loading in componentsfaces

Вот основная масса из 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 пользователей, но они такие же, как и предыдущие (одинаковые имена и т. Д.). Я попытался отладить его. И все работает нормально. Возвращенные данные в функции загрузки содержат правильные данные ... Кто-нибудь сталкивается с той же проблемой или я где-то ошибаюсь?

ответ

0

не должны это

userService.getUsersFromTo(0 , first + pageSize); 

, а быть

userService.getUsersFromTo(first , first + pageSize); 

в первом случае первые десять из ваших пользователей всегда будет такой же, но количество пользователей возвращается на каждом шаге будет увеличиваться, это может стать причиной вашей проблемы

+0

Да, это решение проблемы с дублированием, но есть еще одна проблема, что кнопка для следующих данных исчезает после первого вызова ... Но частично вы отвечаете на мой запрос ион. спасибо – Milkmaid