今天,我已经从Vaadin 11.0.2升级到12.0.0-一切都很顺利,除了一件事:
ComboBox
ItemLabelGenerator
grid.addColumn(new ComponentRenderer<>(gridItem -> {
ComboBox<MyObject> comboBox = new ComboBox<>();
comboBox.setItems(myObjectsService.findAll());
comboBox.setValue(gridItem.getMyObject());
comboBox.setItemLabelGenerator(MyObject::getName); // MyObject::getName returns String
// comboBox.addValueChangeListener omitted
return comboBox;
}))
.setHeader("MyObject")
.setId("myObject");
这在Vaadin 11.0.2中运行良好,但现在项目标签显示为
package.path.to.myobject.MyObject@41d8d522
而不是它的实际名称
gridItem.getMyObject();
当我点击
组合框
重要细节
:出于测试原因,我现在在一个简单的应用程序中添加了一个具有相同设置的类似组合框
VerticalLayout
(也就是说不在网格中),在那里一切都很好。这就是为什么我认为问题在于
ComponentRenderer
组合框
在
vaadin blog post about the new release of Vaadin 12
,我发现有一个已知的中断更改,它与ComboBox有关:
但是,我的案例中没有涉及任何过滤。