Здравствуйте!
Есть задача вставить в генерируемую колонку dataGrid компонент EntitySuggestionField.
Пишу такой код:
@Install(to = "stayPlansTable.[stay_point.city_name]", subject = "columnGenerator")
private Component stayPlansTableStay_pointCity_nameColumnGenerator(final DataGrid.ColumnGeneratorEvent<StayPlan> columnGeneratorEvent) {
HBoxLayout hBoxLayout = uiComponents.create(HBoxLayout.class);
hBoxLayout.setWidth("100%");
hBoxLayout.setHeight("100%");
EntitySuggestionField esf = uiComponents.create(EntitySuggestionField.class);
esf.setAlignment(Component.Alignment.MIDDLE_CENTER);
esf.setMetaClass(metadata.getClass(StayPoint.class));
esf.setEnabled(true);
esf.setEditable(true);
esf.setMinSearchStringLength(3);
esf.setSuggestionsLimit(32);
esf.setAsyncSearchDelayMs(300);
esf.setHtmlSanitizerEnabled(true);
esf.setPopupWidth("auto");
esf.setWidth(Component.AUTO_SIZE);
esf.setHeight(Component.AUTO_SIZE);
esf.setSearchExecutor((searchString,searchParams)->{
List<StayPoint> stayPoints = stayPointServiceBean.searchStayPoint(searchString);
Collections.sort(stayPoints, new Comparator<StayPoint>() {
@Override
public int compare(StayPoint first, StayPoint second) {
return first.getCity_country_string().compareTo(second.getCity_country_string());
}
});
return stayPoints;
});
hBoxLayout.add(esf);
return hBoxLayout;
}
Компонент в колонке отображается. В отладчике посмотрела: при вводе текста в поле список stayPoints в searchExecutor - не пустой и возвращает несколько значений, но почему-то на экране эти значения не отображаются.
StayPoint - сущность DTO, instanceName у нее указана - атрибут типа String.
Подскажите пожалуйста, какие еще атрибуты или методы надо заполнить в этом компоненте, чтобы отобразились найденные по введенному слову значения?