Я использую rich:dataTable
с rich:dataTableScroller
. И я не хочу загружать все свои данные из БД при инициализации таблицы, потому что у меня очень много записей. Я хочу, чтобы этот rich:dataTableScroller
показывал мне реальное количество страниц, но загружал страницу только тогда, когда я включаюсь. Я нашел какое-то решение здесь Но я хочу использовать rich:dataTable
и rich:dataTableScroller
и не писать свои собственные компоненты. У кого-нибудь есть идеи?
Ленивая загрузка данных с помощью rich:dataTable и rich:dataTableScroller
Ответы (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
Он имел в виду, что ваша собственная модель данных должна иметь этот метод. Подобно
ScrollableTableDataModel
.
- person BalusC; 01.12.2009
и если он просто определит этот метод, и никто его не вызовет, это будет бесполезно. Кроме того, последний аргумент в
ScrollableTableDataModel
— это SortOrder, а не список.
- person Bozho; 01.12.2009