gpt4 book ai didi

java - 如何在BeanItemContainer中添加和修改bean

转载 作者:太空宇宙 更新时间:2023-11-04 07:09:37 27 4
gpt4 key购买 nike

我正在开发 Vaadin 应用程序。现在,我在使用 BeanItemContainer 时遇到了麻烦。我的容器里有一些元素。

private void populateTable() {
tableContainer.removeAllItems();
for(MyBean myBean : beans){
tableContainer.addItem(myBean);
}
}

当我选择表格中的项目时,我会使用 Binder 绑定(bind)所选项目并自动填写表格

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

现在,我必须以不同的方式管理用户交互。例如,如果用户修改组合框内的值,我必须在容器中添加一个新的 Bean,而如果用户修改字段 fieldInizioVal 的值,我必须更新当前的 Bean。

insertOrUpdateButton.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
tableContainer.addItem(myBean));
}
});

但是,当添加新项目时,容器会正确添加新项目,但也会修改所选的旧项目。

我该怎么办?

最佳答案

我是这样解决的

comboBoxModPag.addValueChangeListener(new ValueChangeListener() {

public void valueChange(ValueChangeEvent event) {
MyBean oldValue = (MyBean) comboBoxModPag.getOldValue();
MyBean newValue = (MyBean) comboBoxModPag.getValue();

if( oldValue!=null && newValue!=null && !oldValue.equals(newValue) ){
insertMode = true;
}
else{
insertMode = false;
}

}

}
});

protected void saveOrUpdateModPagContrattoSito() {
if(insertMode){
MyBean newMyBean = new MyBean(myBean);

//Do somethings to restore myBean statuse
//....
//....
tableContainer.addBean(newMyBean);
}
else{
tableContainer.addBean(myBean);
}
table.refreshRowCache();
}

但我不知道这是否是正确的方法。

关于java - 如何在BeanItemContainer中添加和修改bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20841809/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com