Primefaces LazyDataModel возвращает пустой список

Я разрабатываю приложение для просмотра электронной почты. Почтовый ящик часто бывает очень большим, и я хочу использовать LazyDataModel для его извлечения по частям. Извлечение данных работает, но функция init() сначала их рендерит, а потом извлекает.

Бин:

@PostConstruct
public void init() {
    JwmaSession jession = (JwmaSession) getfromSession("jession");
    listaCorreosEntrada = new LazyCorreoDataModel(jession);
    System.out.println("Rows number: " + listaCorreosEntrada.getRowCount());
}

Ленивая КорреоДатаМодель:

@Override
public List<Correo> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
List<Correo> messageList = new ArrayList<Correo>();
    try {
        Store store = jession.store;
        jFolder = new JwmaFolder(store, "INBOX");
        messageList = jFolder.messageList(false, first, pageSize);
    } catch (final Exception e) {
        e.printStackTrace();
    }
    System.out.println("List size: " + messageList.size());
    return messageList;
}

Во время выполнения этого кода результат:

Rows number: 0
List size: 10

Я мало использовал LazyDataModel, но думаю, что должно быть наоборот.


person Alex Cba    schedule 19.08.2017    source источник
comment
Вы должны вызвать setRowCount, как объяснено в принятом ответе на повторяющийся вопрос.   -  person perissf    schedule 19.08.2017
comment
Большое спасибо @perissf, действительно отсутствует: this.setRowCount(messageList.size()); И реализовать функцию @Override getRowKey ().   -  person Alex Cba    schedule 19.08.2017