Java ID必须存在于容器中或作为生成的列

Java ID必须存在于容器中或作为生成的列,java,vaadin,vaadin7,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 getDVa

我正在开发一个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);
Table Table=新表();
BeanItemContainer=新的BeanItemContainer(MyModel.class);
表.setContainerDataSource(容器);
Object[]visibleProperties=新对象[]{“id”,“dValidoAl”};
String[]columnsHeader=新字符串[]{“Id”,“Inizio Validitá”};
表.setVisibleColumns(visibleProperties);
表.setColumnHeader(columnsHeader);
但我得到了这个错误:

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


我哪里做错了?

正如@Skizzo发布的,以及中的定义,BeanItemContainer(BeanContainer的实现)将作为属性ID检查getter和setter

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


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

tableContainer.GetContainerPropertyID()返回什么?
dValidoAl
在那里吗?我在tableContainer.getContainerPropertyIds()中找到了dValidoAl而不是dValidoAl,我将属性“dValidoAl”的名称改为“dValidoAl”,现在一切正常了。Thanks@Skizzo请将您的解决方案作为答案发布并接受!谢谢报告说,porpertyid是通过检查getter和setter创建的。(例如,setUserName(字符串名称)/getUsername()导致属性ID“userName”)