Я разрабатываю приложение Vaadin. Теперь у меня проблема с BeanItemContainer
. У меня есть несколько предметов в моем контейнере.
private void populateTable() {
tableContainer.removeAllItems();
for(MyBean myBean : beans){
tableContainer.addItem(myBean);
}
}
Когда я выбираю элемент в таблице, я связываю выбранный элемент с подшивкой и автоматически заполняю форму
table.addItemClickListener(new ItemClickListener() {
public void itemClick(ItemClickEvent event) {
myBean = ((BeanItem<MyBean>) event.getItem()).getBean();
//BeanFieldGroup<MyBean>
binder.setItemDataSource(myBean);
}
});
private Component makeForm() {
formLayout = new FormLayout();
binder.bind(comboBoxModPag,"modPagamento");
binder.bind(fieldInizioVal, "id.dInizioVal");
formLayout.addComponent(comboBoxModPag);
formLayout.addComponent(fieldInizioVal);
formLayout.addComponent(binder.buildAndBind(getI18NMessage("dValidoAl"), "dValidoAl", DateField.class));
return formLayout;
}
Теперь мне нужно управлять взаимодействием с пользователем по-другому. Например, если пользователь изменяет значение внутри поля со списком, я должен добавить новый Бин в контейнер, а если пользователи изменяют значение поля fieldInizioVal
, я должен обновить текущий Бин.
insertOrUpdateButton.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
tableContainer.addItem(myBean));
}
});
Но при добавлении нового элемента контейнер правильно добавляет новый элемент, но также изменяет выбранный старый элемент.
Как я могу сделать?