Сегодня я обновился с 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();
КогдаЯ нажимаю на ComboBox
, чтобы показать все опции, метки верны!но как только я выберу одну, она превратится в вышеупомянутую неправильную строку.
Важная деталь : по причинам тестирования я сейчас добавил аналогичный ComboBox с той же настройкой в простой VerticalLayout
(Ака нет в сетке), а там все отлично работает.Вот почему я думаю, что проблема как-то связана с ComponentRenderer
, а не с одним ComboBox
.
Это ошибка, или я что-то пропустил при обновлении до 12.0.0?
В блоге vaadin о новом выпуске Vaadin 12 я вижу, что есть одно известное критическое изменение, и оно связано с ComboBox:
Если выисходят из Vaadin 10 или 11, вы должны обновить зависимость платформы в файле сборки вашего проекта.Единственное серьезное изменение, которое мы внесли, было то, что ComboBox теперь поддерживает отложенную загрузку на стороне сервера.Если вы используете фильтрацию с помощью ComboBox, обратитесь к инструкциям по устранению возможной проблемы компиляции.
Однако в моем случае фильтрация не включена.