如何在不显式放置所有字段的情况下更新 Vaadin 网格上的项目?

How can I Update item on Vaadin's Grid without putting explicitly all fields on it?

我尝试在 Grid table 上为 User 实体创建常规 CRUD 操作 - 就像这样:

public class User {
    private id;
    private String name
    private Role role;
}

具有适当的 getter 和 setter。

我该怎么做?我有两件事的问题:

解释:

也许还有其他方法可以从 Grid 表格数据更新 User 模型?

也许我应该像往常一样将 User id 字段添加到网格 IndexedContainer 属性,但将其设为隐藏和只读?但是我想知道它是否安全并且没有人改变前端形式并且可以使用未在 Grid table.

上显示的 id 更新 User 的威胁

如果有人知道那个典型案例的最佳实践是什么,请告诉我。我会很高兴能得到你的帮助!

使用可编辑网格组件时,您需要使用 FieldGroup。在您的情况下,您可以使用 BeanFieldGroup。如果您有正确的 getter/setter 方法,那么 BeanFieldGroup 可以在用户更改和保存网格中的数据时负责更新您的实体实例。以下是一小段代码:

grid.setEditorFieldGroup(
    new BeanFieldGroup<Person>(User.class));

此外,您可以使用标准 @NotNull@Size@Min@Max 等为 User 实体添加验证。

有关更多信息,请查看 vaadin 网站的书籍。希望这对您有所帮助!