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

Vaadin grid cannot edit previously saved item

我正在使用带缓冲编辑的 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();

没有它,网格不会更新。

总之。这是问题所在。如果我编辑,但不写入任何新数据,则取消和保存按钮的作用相同。我可以重新编辑。一切都很好。

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

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

就好像该条目不是网格或数据提供者的一部分,因为当我 select 该条目时我的 addSelectionListener 也没有反应。然而,我确实在我的项目列表中找到了它。

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

那我错过了什么?

您可以使用 Hashmap 作为数据对象而不是 POJO。这将要求您将唯一的“id”属性 添加到您的地图并覆盖 DataProvider 以将其用作身份。请在此处查看完整的代码示例:https://cookbook.vaadin.com/grid-with-map