JSF 2.0 + PrimeFaces: нумерация страниц таблицы данных не работает - PullRequest
2 голосов
/ 22 августа 2011

Я использую Mojarra 2.0.3 на Tomcat 6.0 и PrimeFaces 2.2.1.

Я использую таблицу данных с отложенной загрузкой, которая работает без проблем. Теперь я добавил нумерацию страниц, и таблица вычисляет количество страниц не правильно.

<p:dataTable id="tableList" value="#{overview.lazyModel}" rendered="#{!overview.listEmpty}" var="e"
    paginator="true" rows="10" lazy="true"
    paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
    rowsPerPageTemplate="5, 10, 20, 50">

При первой загрузке иногда не отображаются данные, хотя компонент отправил его правильно (я печатаю данные, отправленные в таблицу, в консоль Tomcat), а также данные из таблицы (размер страницы, фильтры, sortMode ...) правильно.

lazyModel = new LazyDataModel<Bericht>() {
    @Override  
    public List<Bericht> load(int first, int pageSize, String sortField, boolean sortOrder, Map<String,String> filters) {
        List<Bericht> lazyBerichte;     

        lazyBerichte = [...]; // fill data
        setRowCount([...]); // set row count

        return lazyBerichte;
    };          
}

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

У кого-нибудь есть идея? Я все перепробовал, но ничего не работает.

Привет из Германии, Энди

Ответы [ 2 ]

1 голос
/ 04 марта 2014

Вы использовали ниже атрибут для нумерации страниц

paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"

Вы сохранили все вещи для paginatorTemplate, но вы забыли добавить еще один

{PageLinks}

добавь и это будет работать.

1 голос
/ 15 января 2013

хорошо, я полагаю, вы получаете арифметическое деление на 0, попробуйте добавить rowCount и pageSize после создания экземпляра вашего ленивого объекта модели данных. что-то вроде

lazyModel = new LazyDataModel<Bericht>() {
    @Override  
    public List<Bericht> load(int first, int pageSize, String sortField, boolean sortOrder, Map<String,String> filters) {
        List<Bericht> lazyBerichte;     

        lazyBerichte = [...]; // fill data
        setRowCount([...]); // set row count

        return lazyBerichte;
    };   
   lazyModel.setRowCount(totalRowsNumberWithoutFilters); //you should put here the total rows of your table, something like a select * from x or findAll() jpa method
   lazyModel.setPageSize(10); //put the rows per page number
}
...