You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vaadin 21.0.7 Grid懒加载请求数据量远超设置分页大小问题咨询

解决方案

以下是可直接落地的调整步骤:

  • 调整分页与预加载参数
    Vaadin Grid默认会预加载当前视口外多倍pageSize的内容,你可以通过调低预加载偏移量+修改分页大小实现单次仅请求25条:
this.equityInfoGrid.setPageSize(25);
// 关闭额外预加载,默认值通常为2倍pageSize,设为0后仅请求当前视口所需的分页数据
this.equityInfoGrid.setPreloadOffset(0);
  • 禁用自动全量加载配置
    检查是否调用了setAllRowsVisible(true)或setHeightByRows()方法,这两个配置会让Grid自动计算填满高度所需的行数,直接禁用懒加载一次性请求全量数据,删除这类配置即可恢复懒加载逻辑。
  • 修正DataProvider边界逻辑
    你当前的边界判断逻辑有误,当偏移量+请求量超出总数据量时会返回全量数据流,会带来额外性能开销,修改为如下实现:
DataProvider<FinVizEquityInfoModel, Void> lazyLoadingProvider
        = DataProvider.fromCallbacks(
            query -> {
                int offset = query.getOffset();
                int limit = query.getLimit();
                List<FinVizEquityInfoModel> allModels = FinVizEquityInfoModel.getFIN_VIZ_MODELS();
                int end = Math.min(offset + limit, allModels.size());
                return allModels.subList(offset, end).stream();
            },
            query -> FinVizEquityInfoModel.getFIN_VIZ_MODELS().size()
        );
  • 开启DataProvider缓存避免重复请求
    给DataProvider添加和pageSize一致的缓存配置,相同分页的重复请求会直接读缓存,不需要重新查询:
lazyLoadingProvider = lazyLoadingProvider.withCache(25);

完成以上配置后,Grid单次请求的数量会稳定在25条,不会出现超额请求的问题。

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:24:05