3.5.12.2. API маршрутизации
В этом разделе описываются ключевые понятия API маршрутизации.
- Регистрация маршрута
-
Для регистрации маршрута экрана добавьте аннотацию
@Route
к контроллеру экрана, например:@Route("my-screen") public class MyScreen extends Screen { }
Аннотация имеет три параметра:
-
path
(илиvalue
) – собственно маршрут; -
parentPrefix
используется для сжатия маршрутов (смотрите ниже). -
root
– это свойство типаboolean
, позволяющее указать, зарегистрирован ли маршрут для корневого экрана (например, экран входа в систему или главный экран). Значение по умолчанию –false
.
Если вам нужно определить маршрут для устаревшего экрана, добавьте атрибут
route
(и необязательноrouteParentPrefix
, эквивалентный параметруparentPrefix
, иrootRoute
, эквивалентный параметруroot
) к элементу экрана в файле screens.xml, например:<screen id="myScreen" template="..." route="my-screen" />
-
- Сжатие маршрута
-
Эта функция предназначена для того, чтобы URL был понятным и читаемым при открытии нескольких экранов с маршрутами, имеющими одинаковые части.
Предположим, что у нас есть экраны браузера и редактора для сущности
Order
:@Route("orders") public class OrderBrowser extends StandardLookup<Order> { } @Route("orders/edit") public class OrderEditor extends StandardEditor<Order> { }
Сжатие URL используется, чтобы избежать повторения маршрута
orders
в URL, когда экран редактора открывается сразу после браузера. Просто укажите повторяющуюся часть в параметреparentPrefix
аннотации@Route
на экране редактора:@Route("orders") public class OrderBrowser extends StandardLookup<Order> { } @Route("orders/edit", parentPrefix = "orders") public class OrderEditor extends StandardEditor<Order> { }
Теперь, когда редактор открыт в той же вкладке, что и браузер, полученный адрес будет похож на
app/#main/0/orders/edit?id=…
- Отображение состояния пользовательского интерфейса на URL
-
Бин
UrlRouting
позволяет изменять текущий URL приложения в соответствии с текущим экраном и некоторыми параметрами. Он имеет следующие методы:-
pushState()
– изменяет адрес и отправляет новую запись истории браузера; -
replaceState()
– заменяет адрес без добавления новой записи истории браузера; -
getState()
– возвращает текущее состояние как объектNavigationState
.
Методы
pushState()/replaceState()
принимают текущий контроллер экрана и дополнительный мэп параметров.Смотрите пример использования
UrlRouting
в разделе ниже. -