0

我正在开发带有分页和惰性数据模型的 PrimeFaces 数据表(要加载到数据表中的记录数未知)。我遇到了分页问题。在 PrimeFaces 教程的示例中,带有分页的惰性数据表如下所示:

@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) ?我认为这就是问题的原因。有什么解决方法吗?

4

0 回答 0