Почему vaadin-grid не показывает ссылки (якоря)?
Я пытаюсь создать столбец таблицы со ссылками в приложении Vaadin 10, Spring-boot.
Я отображаю данные в сетке следующим образом:
Grid<Person> grid = new Grid<>();
UI.getCurrent().getRouter();
grid.addColumn(
p -> new Anchor(UI.getCurrent().getRouter().getUrl(
PersonView.class, p.getName()),
p.getName())).setHeader("Name");
grid.addColumn(p ->
p.getProjects().size()).setHeader("#Projects");
grid.setItems(repo.findAll());
add(grid);
setSizeFull();
Но столбец сетки со ссылками отображает только текст Anchor@XXXXXXX
1 ответ
Решение
Проблема в том, что данные столбца интерпретируются как значение, а не как компонент. Вы должны указать сетке, что она должна использовать средство рендеринга, которое отображает компоненты и не переносит их.
Это можно сделать с помощью ComponentRenderer.
Если вы измените свой столбец следующим образом, он будет работать:
grid.addColumn(new ComponentRenderer<>(p -> new Anchor(UI.getCurrent().getRouter().getUrl(
PersonView.class, p.getName()), p.getName()))).setHeader("Name");