绑定组合框 vaadin 8

我正在尝试将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);

我知道这是行不通的,是没有办法为组合框编写转换器,还是应该完全使用另一种方式。


慕标5832272
浏览 120回答 2
2回答

犯罪嫌疑人X

您在注释中提到,对象中的字段实际上是枚举,而不是字符串。genderStudent您的错误是您定义了 String 类型的 ComboBox,而不是 Gender 枚举。假设你的性别枚举类叫做 ,这将起作用:GenderComboBox<Gender> gender = new ComboBox<Gender>("Gender");Binder binder = new Binder<Student>(Student.class);binder.bind(gender, Student::getGender, Student::setGender);您可以向 ComboBox 中添加 ,以定义性别枚举的显示方式。默认情况下,它将使用该类。但是,例如,如果您愿意,您可以使用它来构建Vaadin组件。在文档中查看它是如何完成的)。ItemLabelGeneratortoString()

紫衣仙女

我发现在vaadin 8中使用bindInstanceFields将表单数据绑定到类。Binder binder = new Binder<Student>(Student.class);binder.bindInstanceFields(this);binder.readBean(student);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java