Навигация и история просмотров URL
Механизм навигации и истории просмотров URL фреймворка Jmix предоставляет функциональность, которая важна для многих веб-приложений. Механизм состоит из следующих частей:
-
History - обработка нажатия на кнопку Back браузера. Кнопка Forward не поддерживается из-за невозможности воспроизвести все условия открытия экрана.
-
Routes and Navigation - регистрация и обработка маршрутов к экранам приложения.
-
Routing API - набор методов, позволяющих отобразить текущее состояние экрана на URL.
Фрагмент – это последняя часть URL после символа "#". Эта часть используется для обозначение маршрута.
В качестве примера рассмотрим следующий URL:
host:port/#main/42/orders/edit?id=17
В этом URL main/42/orders/edit?id=17
представляет собой фрагмент, который состоит из следующих частей:
-
main
- маршрут до корневого экрана (главного экрана приложения). -
42
- метка состояния, которая используется внутренними элементами механизма навигации; -
orders/edit
- маршрут вложенного экрана; -
?id=17
- часть с параметрами.
Все открытые экраны отображают свои маршруты на текущий URL. Например, если экран просмотра пользователей открыт и активен в данный момент, URL приложения выглядит следующим образом:
http://localhost:8080/#main/0/users
Если экран не имеет зарегистрированного маршрута, к фрагменту URL добавляется только метка состояния. Например:
http://localhost:8080/#main/42
Для экранов редактирования идентификатор редактируемой сущности добавляется к адресу в качестве параметра, если экран имеет зарегистрированный маршрут. Например,
http://localhost:8080/#main/1/users/edit?id=27zy3tj6f47p2e3m4w58vdca9y
Идентификаторы типа UUID кодируются как Base32 Crockford Encoding, все остальные типы используются как есть.
Когда пользователь не выполнил вход в приложение, но при этом запрошен маршрут некоторого экрана, используется параметр переадресации. Предположим, в адресной строке введен маршрут #main/orders
. Когда приложение загружается, и отображается экран входа в систему, адрес будет изменен на #login?redirectTo=orders
. После входа в систему откроется экран, соответствующий маршруту orders
.
Если запрошенный маршрут не существует, приложение показывает пустой экран с надписью "Не найдено".
Механизм навигации и истории просмотров URL доступен по умолчанию. Свойство приложения jmix.ui.url-handling-mode позволяет отключить этот механизм, используя значение NONE
.