Vaadin网格无法编辑以前保存的项目



我使用的是带有缓冲编辑的Vaadin网格。我正在添加一个项目:

items.add(hashMap);
dataProvider.refreshAll();

然后我尝试编辑条目。我有两个编辑按钮:

Button cancelButton = new Button(VaadinIcon.CLOSE.create(),
e -> editor.cancel());
Button saveButton = new Button(VaadinIcon.THUMBS_UP.create(),
e -> editor.save());

我还有saveListener,它可以执行以下操作:

dataProvider.refreshAll();

没有它,网格就不会更新。

无论如何。这就是问题所在。如果我进行了编辑,并且没有写入任何新数据,则取消和保存按钮的工作原理相同。我可以重新编辑。一切都很好。

但是,当我编辑和写入任何新数据时。我可以保存,但无法重新编辑刚刚保存的条目。

如果我添加了一个新条目,我现在可以重新编辑以前锁定的条目。

这就好像该条目不是网格或数据提供程序的一部分,因为当我选择该条目时,我的addSelectionListener也不会做出反应。然而,我确实在我的物品清单中找到了它。

此外,如果我将system.out添加到编辑组件侦听器中,则日志中不会显示任何内容。

那么我错过了什么?

您可以使用Hashmap作为数据对象,而不是POJO。这将要求您添加唯一的";id";属性,并重写DataProvider以将其用作标识。请参阅此处的完整代码示例:https://cookbook.vaadin.com/grid-with-map

最新更新