Ленивая загрузка данных с помощью rich:dataTable и rich:dataTableScroller

Я использую rich:dataTable с rich:dataTableScroller. И я не хочу загружать все свои данные из БД при инициализации таблицы, потому что у меня очень много записей. Я хочу, чтобы этот rich:dataTableScroller показывал мне реальное количество страниц, но загружал страницу только тогда, когда я включаюсь. Я нашел какое-то решение здесь Но я хочу использовать rich:dataTable и rich:dataTableScroller и не писать свои собственные компоненты. У кого-нибудь есть идеи?


person Community    schedule 28.07.2009    source источник


Ответы (3)


Вы должны создать пользовательский org.richfaces.model.DataProvider, а в getItemsByRange вы должны получить ограниченные данные. Затем вы должны построить ExtendedTableDataModel, передав свою пользовательскую DataProvider, и использовать эту модель в своих <rich:dataTable> - value="#{myBean.myExtendedDataModel}".

person Bozho    schedule 01.12.2009

Вы можете создать свою собственную "PagedDataModel", которая на самом деле возвращает только те данные, которые будут отображаться на странице, которую вы видите.

Я нашел пример для этого здесь.

person Markos Fragkakis    schedule 02.02.2010

Вы можете написать свою собственную модель данных как дочернюю для Richfaces ExtendedDataModel, которая имеет метод:

protected List<T> loadData(int offset, int limit, List<Order> orders)

person MarrLiss    schedule 13.08.2009
comment
Он имел в виду, что ваша собственная модель данных должна иметь этот метод. Подобно ScrollableTableDataModel. - person BalusC; 01.12.2009
comment
и если он просто определит этот метод, и никто его не вызовет, это будет бесполезно. Кроме того, последний аргумент в ScrollableTableDataModel — это SortOrder, а не список. - person Bozho; 01.12.2009