【发布时间】:2018-03-30 17:08:30
【问题描述】:
我们已经根据Vaadin Blog 文章实现了延迟 Grid 加载,并希望为某些 Grid 列添加过滤器。在这种情况下,我们通过将 lambda 函数设置为 CallbackDataProvider 来进行延迟加载。请看下面的代码。
我们如何将 CallbackDataProvider 与过滤结合起来?根据StackOverflow post,作者可以通过使用 ConfigurableFilterDataProvider 作为 CallbackDataProvider 的包装器来解决这个问题。遗憾的是,他没有分享更多代码。 您能否向我们提供如何实现这一目标的提示?
我们的代码完全基于博客文章,如下:
public class Person {
private Long id;
private String firstName;
private String lastName;
private String email;
... getter and setters ...
}
public class PersonService {
public List<Person> findAll(int offset, int limit) { ... }
public int count() { ... }
}
设置数据提供者:
grid.setDataProvider(
(sortOrders, offset, limit) -> {
Map<String, Boolean> sortOrder = sortOrders.stream().collect(
Collectors.toMap(
sort -> sort.getSorted(),
sort -> SortDirection.ASCENDING.equals(sort.getDirection())
)
);
return service.findAll(offset, limit, sortOrder).stream();
},
() -> service.count()
);
【问题讨论】:
标签: filter grid vaadin loading lazy-evaluation