如何在 vaadin 8 中绑定文本字段?
How to bind with textfield in vaadin 8?
我正在将我的应用程序从 vaadin 7 迁移到 8。我无法理解如何将对象绑定到文本字段。
在 vaadin 7 中,我有以下内容:
public void setProject(Project value, boolean hasScreenedReferences)
{
this.project = value;
TextField projectNameTextField = new TextField();
projectNameTextField.setStyleName("step_one_project_name_text");
projectNameTextField.setPlaceholder("Review Name");
// Bind the project UI components to the new object
BeanItem<Project> projectBean = new BeanItem<Project>(value);
projectNameTextField.projectNameTextField(projectBean.getItemProperty("name"));
projectNameTextField.addValidator(new BeanValidator(Project.class, "name"));
.......
}
现在正如我所提到的,我无法理解它在 vaadin 8 中的工作方式,我在阅读了一些在线论坛后尝试了以下方法
// Bind the project UI components to the new object
Binder<Project> binder = new Binder<Project>();
binder.bind(projectNameTextField, Project::getName, Project::setName);
我不确定它是否正确,因为我不知道如何在上面的代码行中使用 "value" 以及如何添加验证器。
查看 Vaadin docs 以将数据绑定到表单。代码示例显示了您的需要:您可以在 Binder
上调用 forField
以获得允许添加验证器和转换器的构建器,最后 bind
到适当的 bean 属性.要使字段显示来自 Project
对象的值,请在活页夹上调用 readBean
。 writeBean
允许将字段数据写入您的 Project
对象。
您可以通过这种方式添加验证器:
Binder<Project> binder = new Binder<>();
binder.forField(projectNameTextField)
.withValidator(new StringLengthValidator("Invalida length!", 5, null))
.bind(Project::getName, Project::setName);
要使字段显示来自 Project
对象调用的值 readBean
:
binder.readBean(project);
然后你可以执行验证例如:
if (!binder.writeBeanIfValid(project)) {
Notification.show("Invalid!!", Notification.Type.WARNING_MESSAGE);
return;
}
我正在将我的应用程序从 vaadin 7 迁移到 8。我无法理解如何将对象绑定到文本字段。 在 vaadin 7 中,我有以下内容:
public void setProject(Project value, boolean hasScreenedReferences)
{
this.project = value;
TextField projectNameTextField = new TextField();
projectNameTextField.setStyleName("step_one_project_name_text");
projectNameTextField.setPlaceholder("Review Name");
// Bind the project UI components to the new object
BeanItem<Project> projectBean = new BeanItem<Project>(value);
projectNameTextField.projectNameTextField(projectBean.getItemProperty("name"));
projectNameTextField.addValidator(new BeanValidator(Project.class, "name"));
.......
}
现在正如我所提到的,我无法理解它在 vaadin 8 中的工作方式,我在阅读了一些在线论坛后尝试了以下方法
// Bind the project UI components to the new object
Binder<Project> binder = new Binder<Project>();
binder.bind(projectNameTextField, Project::getName, Project::setName);
我不确定它是否正确,因为我不知道如何在上面的代码行中使用 "value" 以及如何添加验证器。
查看 Vaadin docs 以将数据绑定到表单。代码示例显示了您的需要:您可以在 Binder
上调用 forField
以获得允许添加验证器和转换器的构建器,最后 bind
到适当的 bean 属性.要使字段显示来自 Project
对象的值,请在活页夹上调用 readBean
。 writeBean
允许将字段数据写入您的 Project
对象。
您可以通过这种方式添加验证器:
Binder<Project> binder = new Binder<>();
binder.forField(projectNameTextField)
.withValidator(new StringLengthValidator("Invalida length!", 5, null))
.bind(Project::getName, Project::setName);
要使字段显示来自 Project
对象调用的值 readBean
:
binder.readBean(project);
然后你可以执行验证例如:
if (!binder.writeBeanIfValid(project)) {
Notification.show("Invalid!!", Notification.Type.WARNING_MESSAGE);
return;
}