Combobox 更新window2 Vaadin后更新窗口1中的组合框

Combobox 更新window2 Vaadin后更新窗口1中的组合框,combobox,window,vaadin,vaadin7,Combobox,Window,Vaadin,Vaadin7,我有一个Vaadin window1,其中包含数据库中项目的组合框。当我选择此组合框的一项时,会出现一个窗口2。这个window2使我能够在数据库中添加数据。现在,我想在关闭window2后,在window1的组合框中查看新项目。您知道如何实现吗?您需要刷新容器数据源。在我的例子中,我有一个JPAContainer,它有一个refresh()方法,请参阅。如果您使用的是SQLContainer,请查看它的功能 如果您使用的不是特殊的容器,而是组合框方法addItem,那么您应该调用removeA

我有一个Vaadin window1,其中包含数据库中项目的组合框。当我选择此
组合框的一项时,会出现一个窗口2。这个window2使我能够在数据库中添加数据。现在,我想在关闭window2后,在window1的组合框中查看新项目。您知道如何实现吗?

您需要刷新容器数据源。在我的例子中,我有一个
JPAContainer
,它有一个
refresh()
方法,请参阅。如果您使用的是
SQLContainer
,请查看它的功能


如果您使用的不是特殊的容器,而是
组合框
方法
addItem
,那么您应该调用
removeAllItems
,并添加新的项目(通过再次执行DB查询)。

您需要刷新容器数据源。在我的例子中,我有一个
JPAContainer
,它有一个
refresh()
方法,请参阅。如果您使用的是
SQLContainer
,请查看它的功能


如果您使用的不是特殊容器,而是
组合框
方法
addItem
,那么您应该调用
removeAllItems
并添加新项(通过再次执行DB查询)。

如何将数据从数据库绑定到vaadin组件?根据数据绑定,您可以触发一些刷新事件,也可以手动执行。这就是我创建组合框的方式:phaseStatus=new组合框(“阶段状态”);设置宽度(“250px”);phaseStatus.setImmediate(真);phaseStatusItem=securityAssessmentPhaseStatusRepository.findAll();对于(SecurityAssessmentPhaseStatus m:phaseStatusItem){phaseStatus.addItem(m.getOid());phaseStatus.setItemCaption(m.getOid(),m.getStatusName());}如何将数据从数据库绑定到vaadin组件?根据数据绑定,您可以触发一些刷新事件,也可以手动执行。这就是我创建组合框的方式:phaseStatus=new组合框(“阶段状态”);设置宽度(“250px”);phaseStatus.setImmediate(真);phaseStatusItem=securityAssessmentPhaseStatusRepository.findAll();对于(SecurityAssessmentPhaseStatus m:phaseStatusItem){phaseStatus.addItem(m.getOid());phaseStatus.setItemCaption(m.getOid(),m.getStatusName());}这就是我创建组合框的方式:phaseStatus=new组合框(“阶段状态”);设置宽度(“250px”);phaseStatus.setImmediate(真);phaseStatusItem=securityAssessmentPhaseStatusRepository.findAll();对于(SecurityAssessmentPhaseStatus m:phaseStatusItem){phaseStatus.addItem(m.getOid());phaseStatus.setItemCaption(m.getOid(),m.getStatusName());}–那么,您需要删除旧项并将新项添加到组合框中。我将修改我的答案。如果它解决了您的问题,.Steffen Harbich,请现在我有一个表,该表具有如下特定列,table.addContainerProperty(“language_name”,String.class,”);table.addContainerProperty(“语言代码”,String.class,”);table.addContainerProperty(“是默认值”,CheckBox.class,CheckBox);表.addContainerProperty(“oid”,Integer.class,0);table.addItem(新对象[]{lang.getLanguageName(),lang.getLanguageCode(),复选框1,lang.getOid()},lang.getOid());我怎样才能重新阅读它?我尝试removeAllItem并重写下面相同的代码,但它不起作用。这就是我创建组合框的方式:phaseStatus=new组合框(“阶段状态”);设置宽度(“250px”);phaseStatus.setImmediate(真);phaseStatusItem=securityAssessmentPhaseStatusRepository.findAll();对于(SecurityAssessmentPhaseStatus m:phaseStatusItem){phaseStatus.addItem(m.getOid());phaseStatus.setItemCaption(m.getOid(),m.getStatusName());}–那么,您需要删除旧项并将新项添加到组合框中。我将修改我的答案。如果它解决了您的问题,.Steffen Harbich,请现在我有一个表,该表具有如下特定列,table.addContainerProperty(“language_name”,String.class,”);table.addContainerProperty(“语言代码”,String.class,”);table.addContainerProperty(“是默认值”,CheckBox.class,CheckBox);表.addContainerProperty(“oid”,Integer.class,0);table.addItem(新对象[]{lang.getLanguageName(),lang.getLanguageCode(),复选框1,lang.getOid()},lang.getOid());我怎样才能重新阅读它?我尝试了removeAllItem并重写了下面相同的代码,但没有成功