为了账号安全,请及时绑定邮箱和手机立即绑定

绑定组合框 vaadin 8

绑定组合框 vaadin 8

慕标5832272 2022-09-07 17:33:56
我正在尝试将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()


查看完整回答
反对 回复 2022-09-07
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

我发现在vaadin 8中使用bindInstanceFields将表单数据绑定到类。


Binder binder = new Binder<Student>(Student.class);


binder.bindInstanceFields(this);

binder.readBean(student);


查看完整回答
反对 回复 2022-09-07
  • 2 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信