在Vaadin表中加载延迟?

时间:2015-11-24 06:26:29

标签: vaadin vaadin7

在Vaadin表中是否有任何特定的方法来实现分页/延迟加载。 我试图找到一些文档,但我不能。

2 个答案:

答案 0 :(得分:4)

使用Viritin add-on及其MTable组件。我是最有效的(服务器资源副)方式,并且拥有最简单的API(根本不需要使用Container API!)。只需实现两个简单的接口即可。这是一个lambdas和一个基本DAO的例子。

@Inject
GPSRouteService s;

@Override
public Component getTable() {
    return new MTable<Update>(s::fetchUpdates, s::getEntityCount)
            .withFullWidth();
}

上面的代码示例来自this example app,它显示了Vaadin中的各种延迟加载方法。如果您是Spring用户,请查看连接到Spring Data JPA存储库的this example,并使用可选的排序支持。

我是Viritin的维护者,但我也维护了Vaadin和各种附加组件7年,现在我正在为Vaadin做技术营销。

答案 1 :(得分:1)

延迟加载是完全重新设计的,并且在Vaadin 8中开箱即用。这里有一个例子from the official docs

DataProvider<Person, Void> dataProvider = new BackendDataProvider<>(
  // First callback fetches items based on a query
  query -> {
    // The index of the first item to load
    int offset = query.getOffset();

    // The number of items to load
    int limit = query.getLimit();

    List<Person> persons = getPersonService().fetchPersons(offset, limit);

    return persons.stream();
  },
  // Second callback fetches the number of items for a query
  query -> getPersonService().getPersonCount()
);

Grid<Person> grid = new Grid<>();
grid.setDataProvider(dataProvider);