Недавно мне передали проект Vaadin 7, в котором предыдущий разработчик использовал Vaadin 7 Grid grid.addRow (obj) для добавления строк в сетку. Теперь в Vaadin 8 Grid добавлены grid.setItems (? Collection?), Которые полностью стирают данные в Grid на grid.setItems (). Я просмотрел все видео на YouTube с Vaadin и все страницы переполнения стека и не нашел ответа.
Я нашел этот форум с группой людей, у которых была такая же проблема: https://vaadin.com/forum#!/thread/15724440
Вот моя работа, и я ею не горжусь. В основном добавление ArrayList в моем примере использует класс Person с firstName, lastName, электронной почтой и зарплатой.
@SpringUI(path = "/person")
@Theme("valo")
public class PersonForm extends UI{
@Autowired
PersonService personService;
List<Person> entries = new ArrayList<Person>();
private TextField firstName = new TextField("First Name");
private TextField lastName = new TextField("Last Name");
private TextField email = new TextField("Email Address");
private TextField salary = new TextField("Salary");
private Person person = new Person();
private Grid<Person> grid = new Grid<>(Person.class);
final private FormLayout layout = new FormLayout();
@Override
protected void init(VaadinRequest request){
grid.getEditor().isEnabled();
grid.setColumnOrder("firstName", "lastName",
"email", "salary");
layout.addComponent(firstName);
layout.addComponent(lastName);
layout.addComponent(email);
Button save = new Button("Save", e-> {
addPersonToGrid(new Person(firstName.getValue(), lastName.getValue(), email.getValue(),salary.getValue()));
Notification.show("PERSON WAS SAVED");
});
layout.addComponent(save);
layout.addComponent(grid);
layout.setMargin(true);
setContent(layout);
}
public void addPersonToGrid(Person person){
entries.add(person);
grid.setItems(entries);
}
}