我正在嘗試將vaadin 7代碼轉換為vaadin 8代碼而不是使用BeanFieldGroup vaadin 8文檔使用Binder將表單字段綁定到類。這似乎不適用于組合盒。我一直在尋找一種使用轉換器的方法,該轉換器似乎不適用于組合框。用于將數據綁定到此處的 vaadin 文檔中對于一個字段,轉換器工作:binder.forField(age).withConverter( new StringToIntegerConverter("Must enter a number")).bind( Student::getAge, Student::setAge);但是對于組合框,我不確定這將如何工作。ComboBox<String> gender = new ComboBox<String>("Gender");Binder binder = new Binder<Student>(Student.class);binder.bind(gender, Student::getGender, Student::setGender);我知道這是行不通的,是沒有辦法為組合框編寫轉換器,還是應該完全使用另一種方式。
2 回答

犯罪嫌疑人X
TA貢獻2080條經驗 獲得超4個贊
您在注釋中提到,對象中的字段實際上是枚舉,而不是字符串。genderStudent
您的錯誤是您定義了 String 類型的 ComboBox,而不是 Gender 枚舉。
假設你的性別枚舉類叫做 ,這將起作用:Gender
ComboBox<Gender> gender = new ComboBox<Gender>("Gender");
Binder binder = new Binder<Student>(Student.class);
binder.bind(gender, Student::getGender, Student::setGender);
您可以向 ComboBox 中添加 ,以定義性別枚舉的顯示方式。默認情況下,它將使用該類。但是,例如,如果您愿意,您可以使用它來構建Vaadin組件。在文檔中查看它是如何完成的)。ItemLabelGeneratortoString()

紫衣仙女
TA貢獻1839條經驗 獲得超15個贊
我發現在vaadin 8中使用bindInstanceFields將表單數據綁定到類。
Binder binder = new Binder<Student>(Student.class);
binder.bindInstanceFields(this);
binder.readBean(student);
添加回答
舉報
0/150
提交
取消