如何读取Vaadin Grid表头列的columnKey?是否有替代属性?
获取Vaadin Grid表头列columnKey的合法方案
直接访问私有字段columnKey存在风险——私有API不受版本兼容保障,后续Vaadin迭代可能会修改或移除该字段,导致代码崩溃。推荐使用Vaadin官方提供的公开API来获取列的key:
针对Vaadin 10+(Flow版本)
Grid.Column类提供了公开的getKey()方法,可直接获取列的key,同时建议避免直接调用Optional.get()(防止空指针异常),改用更安全的写法:
getGrid().getHeaderRows().stream() .findAny() .map(headerRow -> headerRow.getCells().get(0).getColumn()) .ifPresent(column -> { String columnKey = column.getKey(); // 此处使用获取到的columnKey });
针对Vaadin 8及更早版本
旧版Vaadin的Grid.Column同样提供了getKey()公开方法,用法如下:
Grid.HeaderRow headerRow = getGrid().getHeaderRows().iterator().next(); Grid.Column<?> column = headerRow.getCells().get(0).getColumn(); String columnKey = column.getKey();
拓展:遍历所有列的key
如果需要批量获取所有列的key,无需从表头行入手,直接遍历Grid的列集合即可:
getGrid().getColumns().forEach(column -> { String key = column.getKey(); // 处理每一列的key });
内容的提问来源于stack exchange,提问作者nikolas
相关产品推荐
相关产品推荐

