繁体   English   中英

Vaadin绑定API和ID

[英]Vaadin Binding API and Ids

我目前正在使用Vaadin 10和Vaadin绑定API。 基本上,我想知道我该怎么做才能保留对象的ID。 假设我有一个域对象,表示数据库中的一个实体。 加载或创建后,它就有一个ID。

public class Person {
  private String id;
  private String name;
  // ...
}

在我看来,我有一个用于编辑名称的字段和一个域对象的活页夹。

...
final TextField name = new TextField();
personBinder.bind(name, "name");
...

现在我该如何处理ID? 如果我保存并加载bean( readBean / writeBean ),则ID会消失。 但是,当然,我不想在视图中显示该ID。 是否需要将其存储在视图类的新属性中? 还是有技巧在活页夹中保留这些属性? 如果我改用setBean / getBean ,我似乎能够用id检索bean,但这似乎不对。

非常感谢您!

编辑1:

假设我有以下代码

TextField name = new TextField();
personBinder.bind(name, "name");
add(name);

Button button = new Button("Save", e -> {
    Person p = new Person();
    personBinder.writeBeanIfValid(p);
    System.out.println(p.getName());
    System.out.println(p.getId());
});
add(button);

Person p = new Person();
p.setName("John");
p.setId("42");

personBinder.readBean(p);

由于未绑定到任何字段,因此不会保留该ID。

看来setBean / getBean方法实际上并没有错。 至少Vaadin 8文档中有使用该示例的示例。 它在“自动保存”下列出。 因此,我上面的示例代码可能应该是这样的:

TextField name = new TextField();
personBinder.bind(name, "name");
add(name);

Button button = new Button("Save", e -> {
    if (personBinder.validate().isOk()) {
      Person p = personBinder.getBean();
      System.out.println(p.getName());
      System.out.println(p.getId());
    }
});
add(button);

Person p = new Person();
p.setName("John");
p.setId("42");

personBinder.setBean(p);

只要没有验证错误(这是事先检查的原因),这些字段中的值就会保存在Bean中。 当然,必须确保同一bean在其他地方没有被修改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM