JSF2延迟加载 - 如何以编程方式获取下一页?

时间:2013-09-06 08:22:33

标签: jsf jsf-2 primefaces lazy-loading

我已经实现了DataTable - Lazy Loading示例。与this one类似,但我从数据库加载数据 - 但这并不重要。

所以我有:

public class LazyCarDataModel extends LazyDataModel<Car> { 

    ...
}

public class TableBean {  

    private LazyDataModel<Car> lazyModel;  

    ...
}

在某个地方,非常深入的procject我需要知道这个Car list的当前页面是什么样的。所以我这样做:

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

我有。最后加载的汽车(目前在浏览器中可见)。但是,我还需要看到,接下来将会是什么以及previos页面。我的意思是在用户点击“下一页”之前会有一个警告按摩“注意!下一页会有法拉利!” :d

所以,最后我的问题: 如何在使用延迟加载时获取next和previos页面?

1 个答案:

答案 0 :(得分: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();
// ...