我进行了一些测试以查看如何将组合框绑定到某些 bean 属性,但我遇到了一个异常:“ConversionException:无法将值转换为…………”我的示例使用 indexedContainer 可以正常工作组合框,但我在使用 BeanItem 容器时遇到了一些问题。我有什么: 1. TestCountry,用于 BeanItemContainer 的简单 java bean(为简单起见,我不在这里放 setter 和 getter 或构造函数):
public class TestCountry implements Serializable {
private String name;
private String shortName;
}
BeanItemContainer 的实例化
BeanItemContainer<TestCountry> _data = new BeanItemContainer<TestCountry>(TestCountry.class); _data.addItem(new TestCountry("Afganistan","AF")); _data.addItem(new TestCountry("Albania","AL"));
豆瓣组。这里 TestBean 是另一个具有简单字符串属性的 bean ("firstName","phone","contry")
BeanFieldGroup<TestBean> binder = new BeanFieldGroup<TestBean>(TestBean.class);
组合框
ComboBox myCombo = new ComboBox("Select your country", _data);
基本代码
binder.bind(myCombo, "country");
当我尝试提交活页夹时,我收到关于将问题转换为字符串的错误。根据我阅读书籍和 vaadin api 的理解,BeanItemContainer 使用 bean 本身作为标识符,并且(这里可能是错误的)binder 使用项目标识符来绑定属性。所以这就是问题,从 Bean 到字符串的转换。我尝试在我的 TestCountry bean 上实现 toString()、hash() 和 equals(),但没有成功。在这种情况下使用 BeanItemContainer 可以做什么?
提前致谢!!