【问题标题】:Combobox with BeanItemContainer and BeanFieldGroup throw Conversion exception带有 BeanItemContainer 和 BeanFieldGroup 的组合框抛出转换异常
【发布时间】:2013-08-21 19:43:09
【问题描述】:

我做了一些测试,看看如何将组合框绑定到某个 bean 属性,但我遇到了一个异常:“ConversionException:无法在......处将值转换为字符串” 我的示例在组合框的 indexedContainer 上工作正常,但我在使用 BeanItem 容器时遇到了一些问题。 是)我有的: 1.TestCountry,BeanItemContainer的简单java bean(为了简单起见,这里不放setter和getter或者constructor):

public class TestCountry implements Serializable {
    private String name;
    private String shortName;
}
  1. BeanItemContainer 的实例化

    BeanItemContainer<TestCountry> _data = new BeanItemContainer<TestCountry>(TestCountry.class);
    _data.addItem(new TestCountry("Afganistan","AF"));
    _data.addItem(new TestCountry("Albania","AL"));
    
  2. bean 归档组。这里的 TestBean 是另一个具有简单字符串属性的 bean ("firstName","phone","contry")

    BeanFieldGroup<TestBean> binder =  new BeanFieldGroup<TestBean>(TestBean.class);
    
  3. 组合框

    ComboBox myCombo = new ComboBox("Select your country", _data);
    
  4. 基本代码

    binder.bind(myCombo, "country");
    

当我尝试提交活页夹时,我收到关于将问题转换为字符串的错误。根据我阅读书籍和 vaadin api 的理解,BeanItemContainer 使用 bean 本身作为标识符,并且(这里可能是错误的)binder 使用项目标识符来绑定属性。所以这就是问题,从 Bean 到字符串的转换。 我尝试在我的 TestCountry bean 上实现 toString()、hash() 和 equals(),但没有成功。在这种情况下使用 BeanItemContainer 可以做什么?

提前致谢!!

【问题讨论】:

    标签: javabeans vaadin


    【解决方案1】:

    您让您的 Vaadin 应用程序尝试将 Bean (TestCountry) 作为字符串保存在您的 TestBean 中。

    这很好,但是你必须采取一些不同的方法。你有两个选择。你要么改变你的数据模型,所以 TestBean 看起来像这样:

    TestBean
    firstName - String
    phone - String
    country - TestCountry (1:n)
    

    现在 TestBean 将存储一个 TestCountry 而不是 String 并且您的 ComboBox 不应再抛出任何错误

    您不会用 Bean 填充 ComboBox,而是使用 Country 字符串,因此 Vaadin 应用程序知道选择的数据类型以及要保存在 TestBean 中的内容。

    myCombo.addItem(getStringOfCountryYouWantToAdd())
    ...
    

    那么如果你将你的字符串属性“国家”绑定到现在只包含字符串的组合框,绑定器现在将如何以及将什么保存到“国家”中。

    【讨论】:

    • 感谢您的建议!!第一个想法更好,而且效果很好!
    猜你喜欢
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 2019-06-01
    相关资源
    最近更新 更多