Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vaadin表中的延迟加载?_Vaadin_Vaadin7 - Fatal编程技术网

Vaadin表中的延迟加载?

Vaadin表中的延迟加载?,vaadin,vaadin7,Vaadin,Vaadin7,在Vaadin表中是否有实现分页/延迟加载的特殊方法。 我试图找到一些文档,但找不到 使用及其可移植组件。我是最有效的(服务器资源副作用)方法,而且有最简单的API(根本不需要使用容器API!)。只需实现两个简单的接口,就完成了。下面是一个使用lambdas和基本DAO的示例 @Inject GPSRouteService s; @Override public Component getTable() { return new MTable<Update>(s::fetc

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

使用及其可移植组件。我是最有效的(服务器资源副作用)方法,而且有最简单的API(根本不需要使用容器API!)。只需实现两个简单的接口,就完成了。下面是一个使用lambdas和基本DAO的示例

@Inject
GPSRouteService s;

@Override
public Component getTable() {
    return new MTable<Update>(s::fetchUpdates, s::getEntityCount)
            .withFullWidth();
}
@Inject
GPSRoutes服务;
@凌驾
公共组件getTable(){
返回新的MTable(s::fetchUpdates,s::getEntityCount)
.带全宽();
}
上面的代码示例来自,它显示了Vaadin中的各种延迟加载方法。如果您是Spring用户,请查看,它连接到Spring数据JPA存储库,并且还使用可选的排序支持


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

Lazy loading在Vaadin 8中完全重新设计并得到了开箱即用的良好支持。下面是一个例子:

DataProvider DataProvider=新的后端数据提供程序(
//第一次回调基于查询获取项目
查询->{
//要加载的第一项的索引
int offset=query.getOffset();
//要加载的项目数
int limit=query.getLimit();
List persons=getPersonService().fetchPersons(偏移量、限制);
returnpersons.stream();
},
//第二个回调获取查询的项数
查询->getPersonService().getPersonCount()
);
网格=新网格();
grid.setDataProvider(数据提供者);

惰性加载在表(以及大多数其他组件)中实现。但是为了让它工作,你需要一个能够正确处理它的容器。请告诉我一个我使用的容器类型,你的数据是以什么方式存储的?你能分享一个关于如何使用这个病毒来实现LazyLoading的示例代码吗?更新答案以包含指向“完整堆栈”示例的链接,这两个示例都是针对JPA后端的,但同样的方法也适用于大多数其他后端。
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);