Инициализировать события маршрутизатора из файла шаблона в проекте Vaadin (20) Flow

У меня есть приложение Vaadin 20, основанное на Flow. Все представления написаны на Java, а маршруты настроены на Java. Я хотел иметь более удобный компонент навигации, поэтому я создал шаблон интерфейса TS для своего проекта, как frontend/src/vaadin-nav.ts. Он имеет набор <a> элементов для навигации.

У меня вопрос: как мне правильно связать серверные маршруты из шаблона? У меня, например, AboutView.java с @Route(value = "about", layout = MainView.class). Как я могу указать в шаблоне, что нужно перейти к «примерно»? Я попытался проверить инструкции маршрутизатора для Fusion, но они требуют, чтобы я установил объект маршрутизатора на стороне клиента с розеткой. Я не хочу этого делать, потому что у меня уже есть MainView.java, который настраивает маршрутизацию и розетку.


person Jens Jansson    schedule 14.05.2021    source источник


Ответы (1)


Vaadin 20 всегда использует клиентский маршрутизатор Vaadin. В приложении с представлениями потока и серверным MainView.java или аналогичным клиентский маршрутизатор просто делегирует все решения о маршрутизации серверу и использует корень страницы в качестве выхода маршрутизатора.

Маршрутизатор на стороне клиента перехватывает щелчки по локальным <a href> ссылкам (например, не связывается с отдельным именем хоста) и обрабатывает их как действия маршрутизатора. Если нет маршрута на стороне клиента, он делегируется серверу.

Это означает, что в вашем vaadin-nav.ts файле должно быть достаточно <a href="about">About</a>.

person Leif Åstrand    schedule 14.05.2021
comment
Это сработало! У меня была настроена куча несуществующих маршрутов, но они всегда отображали вид по умолчанию, когда я нажимал на них, поэтому я думал, что они не работают. Я ожидал, что страница маршрута не найдена для несуществующего маршрута. Но теперь, когда я настроил один с помощью about, он переместился туда! Спасибо. - person Jens Jansson; 14.05.2021
comment
Представление по умолчанию для несуществующей страницы вместо страницы с ошибкой звучит как ошибка в Vaadin, если только у вас нет представления по умолчанию как @Route("/*") или аналогичного, чтобы он перехватил все, что явно не определено? - person Leif Åstrand; 14.05.2021