1

我已经实现了 DataTable - 延迟加载示例。类似于这个,但我从数据库中加载数据——虽然这并不重要。

所以我有:

public class LazyCarDataModel extends LazyDataModel<Car> { 

    ...
}

public class TableBean {  

    private LazyDataModel<Car> lazyModel;  

    ...
}

在项目的某个地方,我需要知道这个汽车列表的当前页面是什么样的。所以我这样做:

List<T> currentCarList = (List<T>)getTestTableBean().getLazyModel().getWrappedData();

我有。最后装载的汽车(当前在浏览器中可见)。但是,我还需要查看下一个和上一个页面会是什么。我的意思是在用户点击“下一页”之前会有一个警告消息“注意!下一页会有法拉利!” :D

所以,最后我的问题是: 使用延迟加载时如何获取下一页和上一页?

4

1 回答 1

1

LazyDataModel#load()您可以在方法中自己跟踪它。

private List<Car> prev;
private List<Car> next;

@Override
public List<Car> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map filters) {
    this.setRowCount(service.count());
    this.prev = service.list(first - pageSize, pageSize);
    this.next = service.list(first + pageSize, pageSize);
    return service.list(first, pageSize);
}    

public List<Car> getPrev() {
    return prev;
}

public List<Car> getNext() {
    return next;
}

无论你需要它,只要做

List<Car> prev = tableBean.getLazyCarDataModel().getPrev();
// ...
于 2013-09-06T11:44:58.380 回答