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)? Я думаю, что это является причиной проблемы. Есть ли обходной путь для этого?

0 ответов

Другие вопросы по тегам