4.7.15. Ссылки на экраны
Блок Web Client позволяет открывать экраны приложения по команде, переданной в URL. Причем если в данный момент в браузере нет сессии приложения с зарегистрированным пользователем, то сначала будет отображено окно логина, и сразу после успешной регистрации - главное окно приложения с требуемым экраном.
Набор возможных команд указывается в свойстве приложения cuba.web.linkHandlerActions
, по умолчанию это команды open
и o
. При обработке HTTP запроса анализируется последняя часть URL, и если она совпадает с одной из команд, управление передается бину LinkHandler
. Стандартная реализация этого бина позволяет указывать следующие параметры:
-
screen
- имя экрана, указанное вscreens.xml
, например:http://localhost:8080/app/open?screen=sec$User.browse
-
item
- экземпляр сущности для передачи в экран редактирования, закодированный по правилам классаEntityLoadInfo
, т.е.entityName-instanceId
илиentityName-instanceId-viewName
. Для открытия экрана создания нового экземпляра сущности в данном параметре нужно передать строку видаNEW-entityName
. Примеры:http://localhost:8080/app/open?screen=sec$User.edit&item=sec$User-60885987-1b61-4247-94c7-dff348347f93 http://localhost:8080/app/open?screen=sec$User.edit&item=sec$User-60885987-1b61-4247-94c7-dff348347f93-user.edit http://localhost:8080/app/open?screen=sec$User.edit&item=NEW-sec$User
-
params
- параметры экрана, передаваемые в методinit()
контроллера. Параметры кодируются в видеname1:value1,name2:value2
. Значениями параметров могут быть экземпляры сущностей, в свою очередь закодированные по правилам классаEntityLoadInfo
. Примеры:http://localhost:8080/app/open?screen=sales$Customer.lookup¶ms=p1:v1,p2:v2 http://localhost:8080/app/open?screen=sales$Customer.lookup¶ms=p1:sales$Customer-01e37691-1a9b-11de-b900-da881aea47a6
Бин LinkHandler
может быть переопределен в проекте приложения для обеспечения специфической обработки ссылок. LinkHandler
является прототипом, поэтому обязательно укажите атрибут scope
при определении вашего бина в spring.xml, например:
<!-- web-spring.xml -->
<bean id="cuba_LinkHandler" class="com.company.sample.web.MyLinkHandler" scope="prototype"/>