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

标签 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;
    }

}

现在我尝试以这种方式将此对象绑定(bind)到 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 must exist in the Container or as a generated column, missing id: dValidoAl

我哪里做错了?

最佳答案

如@Skizzo 发布的那样,并在 Book of Vaadin 中定义,BeanItemContainer(BeanContainer 的实现)将作为 PropertyIds 检查 getter 和 setter。

The item properties are determined automatically by inspecting the getter and setter methods of the class. This requires that the bean class has public visibility, local classes for example are not allowed. Only beans of the same type can be added to the container.

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

关于java - ID 必须存在于容器中或作为生成的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20970196/

相关文章:

java - 创建对象列表时类型不匹配

java - 什么决定了 java 字节码 try catch 处理程序的堆栈图帧的局部变量?

java - RxJava 在多个订阅者之间共享一个 Observable 的发射

java - 无效的数据访问资源使用异常 : could not extract ResultSet

java - 在 Chrome 的 Vaadin 子窗口中显示嵌入的 PDF

java - 如何合并 Vaadin 网格中的单元格

java - Vaadin 复选框列表

java - setStyleGenerator 取决于单元格值

Vaadin Grid 自定义 TextArea 编辑器未完全显示

vaadin7 - 数据绑定(bind)后更新不会更新 UI 中的内容