【问题标题】:Java, Vaadin 8, lazy loading with gridJava,Vaadin 8,带网格的延迟加载
【发布时间】:2017-08-11 10:40:59
【问题描述】:

我正在尝试在 Vaadin 8 中使用 Grid 实现延迟加载。但它只显示一个空表。我做错了什么?另外,如何将要加载的项目数(限制)设置为例如 20 个项目(默认为 40 个项目)?

private Grid<Image> makeLazyTable()
{
  Grid<Image> grid = new Grid<Image>();     
  DataProvider<Image, Void> dataProvider = DataProvider.fromCallbacks(
    query -> {
      int offset = query.getOffset();
      int limit = query.getLimit();        
      OffsetRequest request = new OffsetRequest();
      request.setLimit(limit);
      request.setOffset(offset);  
      List<QuerySortOrder> sort = query.getSortOrders();
      return ImagesRepository.findAll(request, sort);
    },
    query -> ImagesRepository.getImageCount()
  );    
  grid.setDataProvider(dataProvider);     
  return grid;
}

【问题讨论】:

  • 您是否调试过计数并获取代码?返回什么计数,findAll 是否返回 Image 对象?
  • 是的,我调试了计数和获取代码。图片对象由获取代码返回。

标签: java vaadin-grid vaadin8


【解决方案1】:

我没有添加任何列。这就是桌子空着的原因。 这样就可以了:

Column<Image, String> filenameColumn = grid.addColumn(Image::getFilename);
Column<Image, String> orientationColumn = grid.addColumn(Image::getOrientation);
Column<Image, String> latitudeColumn = grid.addColumn(Image::getLatitude);
Column<Image, String> longitudeColumn = grid.addColumn(Image::getLongitude);

【讨论】:

  • 感谢分享解决方案。作为记录,如果您将 bean 类型传递给构造函数,则可以让 Grid 类自动创建列:Grid&lt;Image&gt; grid = new Grid&lt;&gt;(Image.class)
猜你喜欢
  • 2017-12-11
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2011-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多