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 。我需要将它存储在我的视图 class 的新属性中吗?或者是否有在活页夹中保留此类属性的技巧?如果我改用 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 文档有一个使用它的示例。它列在 "Automatic Saving" 下。因此,我上面的示例代码应该是这样的:
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 没有在其他地方以某种方式被修改。
我目前正在使用 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 。我需要将它存储在我的视图 class 的新属性中吗?或者是否有在活页夹中保留此类属性的技巧?如果我改用 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 文档有一个使用它的示例。它列在 "Automatic Saving" 下。因此,我上面的示例代码应该是这样的:
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 没有在其他地方以某种方式被修改。