2017-09-29 10 views
1

アプリケーションをvaadin 7から8に移行しています。オブジェクトをテキストフィールドにバインドする方法の理解に問題があります。 vaadin 7では 、私は次のようしている:vaadin 8のテキストフィールドとバインドする方法は?

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")); 
    ....... 
} 

を今、私はそれが8をvaadinに働くだろうどのように私は理解できませんでし述べたように、私はいくつかのオンラインフォーラム

// Bind the project UI components to the new object 
    Binder<Project> binder = new Binder<Project>(); 
    binder.bind(projectNameTextField, Project::getName, Project::setName); 

に読んだ後、次のことを試してみました上記のコード行でどのように "値"を使用するのか、バリデータを追加するにはどうすればよいか分かりません。

答えて

2

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; 
} 
2

データをフォームにバインドする場合はVaadin docsをご覧ください。コード例は、必要なものを示しています。BinderforFieldを呼び出して、バリデーターとコンバーターを追加できるBuilderを取得し、最後にbindを適切なBeanプロパティーに追加できます。フィールドにProjectオブジェクトの値をバインダーのreadBeanと表示させるには、 writeBeanは、Projectオブジェクトにフィールドデータを書き込むことができます。

あなたがバリデータをこのように追加することができます
関連する問題