有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javavaadin如何从bean项容器中bean项的对象id获取bean本身

我已经为组合框this.comboBox.setContainerDataSource(container)设置了一个ContainerDataSource。这个容器是BeanItemContainer。 此外,我还创建了TextFields,它绑定到来自BeanItemContainer的bean的某些属性。为了获取ComboBox的选定数据,我只能执行this.comboBox.getValue(),它返回选定bean的对象id。如何使用这些信息来获取实际选择的bean本身?我需要它来设置字段组中文本字段的项数据源

final BeanItemContainer<Person> personContainer = new BeanItemContainer<>(Person.class);
for(int h = 0; h <= this.table.getSelectedItems().size() -1; h++) {
final Person person = this.table.getSelectedItems().get(h).getBean();    
personContainer.addBean(person);}
final Window win = new Window("Person", new PersonView(personContainer));
this.getUI().addWindow(win);

PersonView:

public PersonView(final BeanItemContainer<Person> personContainer) {
    super();
    this.initUI();

    this.comboBox.setContainerDataSource(personContainer);
    this.comboBox.setItemCaptionMode(ItemCaptionMode.PROPERTY);
    this.comboBox.setItemCaptionPropertyId("name");

    }
private void comboBox_valueChange(final Property.ValueChangeEvent event) {
    //this.fieldGroup.setItemDataSource(...);
}

共 (1) 个答案

  1. # 1 楼答案

    我猜你用的是瓦丁7

    以下是从组合框中获取所选项目的解决方案:

            comboBox.addValueChangeListener( new ValueChangeListener() {
    
                @Override
                public void valueChange(ValueChangeEvent event) {
    
                    Person person = (Person) comboBox.getValue();
    
                    //do something with the selected value
                    this.fieldGroup.setItemDataSource(person);              
                }
            });