如何初始化由 Vaadin 网格的行表示的实体?



我的项目使用Vaadin框架v23。

A想要添加一个组件列到我的一个网格,一个数字字段。我的Grid的行表示我的程序连接到的数据库中的一个实体。我请求用户输入,并希望将该输入写回DB。我在几个站点找到了这个解决方案:

private Grid<Honey> initHoneyGrid() {
Grid<Honey> honeyGrid = new Grid<>(Honey.class);
honeyGrid.setItems(honeys);
honeyGrid.removeColumnByKey("id");
honeyGrid.removeColumnByKey("quantityPacked");
honeyGrid.removeColumnByKey("flatCost");
honeyGrid.removeColumnByKey("sellingPrice");
honeyGrid.setColumns("kindOfHoney", "weight", "quantityBack");
honeyGrid.addComponentColumn(item -> new NumberField("Set the quantity you brought back'", event -> {
item.setQuantityBack(event.getValue().intValue());
honeyService.updateHoney(item);
honeyGrid.getDataProvider().refreshAll();
}));
return honeyGrid;
}

但是变量"item"抛出NullPointerException。"honeys"变量是一个ArrayList,它直接从DB中填充。我使用Spring Boot JPA来访问数据库。我怎样才能避免呢?

查看这里的文档,查看组件和它们的使用情况,NPE的原因,你得到的项目可能没有初始化,你现在要做的是分配一些属性,你在item中没有任何值给new NumberField(...)

lambda表达式已经在末尾将new NumberField(...)赋值给ìtem

最新更新