Java ID必须存在于容器中或作为生成的列
我正在开发一个vaadin应用程序,现在我无法解决以下问题 我有我的对象模型: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
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”)