Vaadin - Как получить сам бин из идентификатора объекта элемента боба в контейнере бобового элемента - PullRequest
0 голосов
/ 26 сентября 2019

Я установил ContainerDataSource для ComboBox this.comboBox.setContainerDataSource(container).Этот контейнер является BeanItemContainer.Кроме того, я создал TextFields, которые связаны с определенными атрибутами компонента из BeanItemContainer.Для получения выбранных данных ComboBox я могу сделать только this.comboBox.getValue(), который возвращает идентификатор объекта выбранного компонента.Как я могу использовать эту информацию для получения самого выбранного бина?Мне нужно установить источник данных элемента моих текстовых полей в группе полей.

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 голос
/ 26 сентября 2019

Я предполагаю, что вы используете Vaadin 7.

Вот решение, чтобы получить выбранный элемент из ComboBox .:

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