2017-08-11 50 views
0

我想在Vaadin 8中使用網格實現延遲加載,但它只顯示一個空表。我做錯了什麼?另外,如何將要加載的項目數量(限制)設置爲例如20個項目(默認爲40個項目)?Java,Vaadin 8,用網格延遲加載

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; 
} 
+0

你調試了你的計數和提取代碼嗎?返回什麼數,findAll是否返回Image對象? –

+0

是的,我調試了計數和獲取代碼。圖像對象由提取代碼返回。 –

回答

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);