PrimeFaces DataTable LazyLoading неизвестное количество записей
Я занимаюсь разработкой данных PrimeFaces с разбивкой на страницы и отложенной моделью данных (количество записей для загрузки в таблицу данных неизвестно). Я столкнулся с проблемой с нумерацией страниц. В примере из учебника PrimeFaces lazydatatable с нумерацией страниц выглядит так:
@Override
public List<Car> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,String> filters) {
List<Car> data = new ArrayList<Car>();
//filter
for(Car car : datasource) {
boolean match = true;
for(Iterator<String> it = filters.keySet().iterator(); it.hasNext();) {
try {
String filterProperty = it.next();
String filterValue = filters.get(filterProperty);
String fieldValue = String.valueOf(car.getClass().getField(filterProperty).get(car));
if(filterValue == null || fieldValue.startsWith(filterValue)) {
match = true;
}
else {
match = false;
break;
}
} catch(Exception e) {
match = false;
}
}
if(match) {
data.add(car);
}
}
//sort
if(sortField != null) {
Collections.sort(data, new LazySorter(sortField, sortOrder));
}
//rowCount
int dataSize = data.size();
this.setRowCount(dataSize);
//paginate
if(dataSize > pageSize) {
try {
return data.subList(first, first + pageSize);
}
catch(IndexOutOfBoundsException e) {
return data.subList(first, first + (dataSize % pageSize));
}
}
else {
return data;
}
}
Я думаю, что когда метод загрузки называется dataSize, нужно знать, чтобы правильно вызывать this.setRowCount(dataSize)? Я думаю, что это является причиной проблемы. Есть ли обходной путь для этого?