如何使 Vaadin CRUD 组合框字段绑定?

How to make Vaadin CRUD combobox field binding?

假设我在 Vaadin CrudEditor 中有一个组合框

所以这将是组合框部分的代码:


        ComboBox<Driver> driversComboBox = new ComboBox<>("Drivers");
        ComboBox.ItemFilter<Driver> filter = (driver, filterString) -> 
                 driver.getFullName().toLowerCase().contains(filterString.toLowerCase());
        driversComboBox.setItems(filter, driverService.findAll());
        driversComboBox.setItemLabelGenerator(Driver::getFullName);

这是活页夹:


        binder.forField(driversComboBox).asRequired().bind(Transporter::getDrivers, Transporter::setDrivers);

但是这个活页夹是错误的,我得到这个错误:

Bad return type in method reference: cannot convert java.util.Set<org.vaadin.webinar.security.sampleapp.Entity.Driver> to org.vaadin.webinar.security.sampleapp.Entity.Driver

所以,运输车模型:


public class Transporter extends AbstractEntity{

...
    @OneToMany(mappedBy = "transporter", fetch = FetchType.EAGER, cascade = {CascadeType.ALL}, targetEntity = Driver.class)
    private Set<Driver> drivers = new HashSet<>();
}

所以,简而言之,如何将组合框与列表绑定?

谢谢

没有 Vaadin 组件但有第 3 方组件https://vaadin.com/directory/component/multiselect-combo-box

但请注意,此组件目前不适用于 Vaadin 22。在 Vaadin 21 之前它可以正常工作。