PrimeFaces DataTable LazyLoading未知数量的记录

时间:2012-09-05 21:31:49

标签: datatable primefaces numbers lazy-loading iunknown

我正在使用分页和延迟数据模型开发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;  
    }  
}  

我认为当调用方法load时,应该知道dataSize是否正确调用this.setRowCount(dataSize)?我认为这就是问题的原因。有没有解决方法呢?

0 个答案:

没有答案