如何使 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 之前它可以正常工作。
假设我在 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 之前它可以正常工作。