Vaadin & Lombok - Компонент сетки не применяет изменения к моим компонентам?

Я новичок в Ваадин. Мне нравится использовать компонент Grid для редактирования списка бобов. Когда я редактирую в ячейке значение, изменения не применяются к моим компонентам. Так что мне здесь не хватает?

@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);
}

person megloff    schedule 05.12.2015    source источник
comment
Я нашел проблему. Я использую для своего Bean Lombok, который автоматически генерирует Setter и Getters в байт-коде. Каким-то образом это создает проблемы для Ваадина? Если я сам напишу геттеры и сеттеры, это сработает. Кто-нибудь испытывает такие же проблемы с Lombok и Vaadin?   -  person megloff    schedule 06.12.2015
comment
Конечно, это не метод получения и установки. Это аннотация @Data Lombok, которая генерирует также методы Equals и HashCode. Soemhow, кажется, не работает должным образом с vaadin. Другие лица, столкнувшиеся с похожими проблемами ссылка< /а>   -  person megloff    schedule 06.12.2015
comment
Вы можете опубликовать ответ на свой вопрос.   -  person kukis    schedule 08.12.2015


Ответы (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;

}
person megloff    schedule 12.12.2015