Ids必须存在于Container中或作为生成的列存在

时间:2014-01-07 11:15:55

标签: java vaadin vaadin7

我正在开发一个vaadin应用程序,现在我无法解决以下问题。

我有我的对象模型:

public class MyModel {

    private long id;
    private Date dValidoAl;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public Date getDValidoAl() {
        return dValidoAl;
    }

    public void setDValidoAl(Date dValidoAl) {
        this.dValidoAl = dValidoAl;
    }

}

现在我正试图以这种方式将此对象绑定到BeanItemContainer

Table table = new Table();
BeanItemContainer<MyModel> container = new BeanItemContainer<MyModel>(MyModel.class);
table.setContainerDataSource(container);

Object[] visibleProperties = new Object[] { "id", "dValidoAl" };
String[] columnsHeader = new String[] { "Id", "Inizio Validità" };
table.setVisibleColumns(visibleProperties);
table.setColumnHeaders(columnsHeader);

但是我收到了这个错误:

  

Ids必须存在于Container中或作为生成的列,缺少id:dValidoAl

我在哪里做错了?

1 个答案:

答案 0 :(得分:1)

正如@Skizzo发布的那样,并且正如Book of Vaadin中所定义的那样,BeanItemContainer(BeanContainer的实现)将采用PropertyIds检查getter和setter。

  

通过检查项目属性是自动确定的   类的getter和setter方法。这需要豆子   class有公共可见性,例如本地类没有   允许。只能将相同类型的bean添加到容器中。

在这种情况下,应用DValidoAl作为容器的propertyId,您可以执行所需的操作。