【问题标题】:Vaadin & Lombok - Grid component does not apply changes to my beans?Vaadin & Lombok - 网格组件不会对我的 bean 应用更改?
【发布时间】:2015-12-05 17:09:24
【问题描述】:

我是 Vaadin 的新手。我喜欢使用 Grid 组件来编辑 bean 列表。当我在单元格中编辑值时,更改不会应用于我的 bean。那么我在这里错过了什么?

@Override
protected void init(VaadinRequest request) {
    ...
    VerticalLayout layout = new VerticalLayout();

    PersonDAO personDAO = (PersonDAO) context.getBean("personDAO");
    List<Person> personList = personDAO.getPerson();

    BeanItemContainer<Person> ds = 
            new BeanItemContainer<Person>(Person.class, personList);

    Grid grid = new Grid("Person",ds);
    grid.setEditorEnabled(true);

    setContent(layout);
}

【问题讨论】:

  • 我发现了问题。我正在为我的 Bean Lombok 使用它,它会自动生成字节码中的 Setter 和 Getter。不知何故,它似​​乎给 Vaadin 带来了问题?如果我自己编写 getter 和 Setter 就可以了。有人在使用 Lombok 和 Vaadin 时遇到同样的问题吗?
  • 当然不是getter和setter方法。它是 Lombok 的 @Data 注释,它还生成 Equals 和 HashCode 方法。 Soemhow 似乎无法与 vaadin 一起正常工作。其他面临类似问题link
  • 您可以发布自己问题的答案。

标签: java spring grid vaadin lombok


【解决方案1】:

当我减少 equals 和 hashcode 方法以仅使用“id”时,它适用于 Vaadin 和 Lombok。

import lombok.Data;
import lombok.EqualsAndHashCode;

@Data
@EqualsAndHashCode(of={"id"}) // this is the trick
public class Person {

    public Person() {}

    public Person(int id, String name) {
       this.id = id;
       this.name = name;
    }

    private int id;

    private String name;

}

【讨论】:

    猜你喜欢
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多