Primefaces LazyModel datatable всегда вызывает first = 0 pageSize = 10 - PullRequest
3 голосов
/ 13 октября 2011

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

<p:dataTable var="spare" value="#{sitePartController.selectParts}" paginator="true" lazy="true"
                                 currentPageReportTemplate="(Entries: {startRecord} - {endRecord} of {totalRecords}, Page: {currentPage}/{totalPages})"
                                          paginatorTemplate="{CurrentPageReport}{FirstPageLink}{PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
                                          rows="10" selection="#{sitePartController.selectedParts}"
                                          paginatorAlwaysVisible="false"
                                          dynamic="true"
                                          >

Нумерация страниц работает отлично, заполняя шаблон currentPageTemplate 33 элементами 4 страницы 1-10 и т. Д. Когда я нажимаю на ссылку, все выходные данные нумерации страниц изменяются правильно (стр. 2/4 и т. Д.).Однако данные в таблице не меняются, просто продолжает показывать записи 0-9.Мой метод загрузки с переопределением выглядит следующим образом:

selectParts = new LazyDataModel() {

        @Override
        public List<SitePart> load(int first, int pageSize, String string, boolean bln, Map map) {
            return getSiteSpares(first,first+pageSize);
        }

    };
    int totalRowCount = getSparesCount();
    selectParts.setRowCount(totalRowCount);

Когда я прекращаю отладку в методе загрузки, независимо от того, какую ссылку на пагинацию данных я выбираю;first всегда 0, а page 10 (как и ожидалось).Как получить данные для отправки правильного первого индекса, или я пропустил что-то фундаментальное за последние 6 часов работы в Google и пробовал различные варианты.

Ответы [ 2 ]

0 голосов
/ 03 февраля 2014

Попробуйте поместить p: dataTable в h: form

<h:form id="form">
    <p:dataTable>
    </p:dataTable>
</h:form>
0 голосов
/ 13 октября 2011

Не уверен, что это может вызвать проблему, но не должно ли это быть:

selectParts = new LazyDataModel<SitePart>(){
...