我正在尝试将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
提交
取消