2017-09-29 6 views
1

내 응용 프로그램을 vaadin 7에서 8로 마이그레이션 중입니다. 개체를 텍스트 필드에 바인딩하는 방법을 이해하는 데 문제가 있습니다. 만약 angel 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 angel이라는에서 어떻게 작동하는지 나는 이해할 수 없었다 언급 한 바와 같이, 나는 일부 온라인 포럼

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

을 읽은 후 다음을 시도 위 코드 행에서 "value"를 어떻게 사용하는지, 유효성 검사기를 어떻게 추가 할 것인지 모르겠으므로 올바른지 확실하지 않습니다.

답변

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을 살펴보십시오. 코드 예제는 필요한 것을 보여줍니다. Binder에서 forField을 호출하여 유효성 검사기 및 변환기를 추가 할 수있는 빌더를 얻고, 마지막으로 bind을 적절한 bean 특성에 가져올 수 있습니다. 입력란에 Project 개체의 값을 표시하려면 바인더의 readBean 개체 호출을 사용하십시오. writeBeanProject 개체에 필드 데이터를 쓸 수 있습니다.

당신은 검증이 방법으로 추가 할 수 있습니다