Экран выбора (lookup) отличается от простого экрана тем, что при вызове методом openLookup()
отображает внизу панель с кнопками, позволяющими передать вызывающему коду экземпляр выбранной в данный момент в списке сущности.
При вызове методом openWindow()
или, например, из главного меню, панель с кнопками выбора не отображается.
В метод openLookup()
передается объект с интерфейсом Window.Lookup.Handler
. Метод handleLookup()
этого объекта вызывается экраном, и ему передается коллекция выбранных пользователем экземпляров сущности. Тем самым вызывающий
код получает из экрана выбранные экземпляры.
Экраны выбора рекомендуется использовать для отображения списков сущностей. Визуальные компоненты, предназначенные для отображения
и редактирования ссылок между сущностями (такие как
PickerField
,
LookupPickerField
,
SearchPickerField
), вызывают экраны выбора для поиска связанных сущностей.
Для корректной работы стандартных действий идентификатор экрана выбора в файле
screens.xml
должен иметь вид {имя_сущности}.lookup
, например, sales$Customer.lookup
.
Контроллер экрана выбора должен быть унаследован от класса AbstractLookup. В XML экрана в атрибуте lookupComponent
должен быть указан компонент (например,
Table
), из которого будет взят экземпляр сущности при выборе.