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