3.5.3. Компоненты данных
Компоненты данных представляют собой невизуальные элементы экрана, которые обеспечивают загрузку данных со среднего слоя, связь данных с визуальными компонентами и отправку измененных экземпляров обратно на Middleware. В платформе имеются следующие типы компонентов данных:
-
Контейнеры - тонкий слой между сущностями и визуальными компонентами, связанными с данными (data-aware). Разные типы контейнеров могут хранить один экземпляр или коллекцию экземпляров сущностей.
-
Загрузчики загружают данные из Middleware в контейнеры.
-
DataContext отслеживает изменения сущностей и сохраняет измененные экземпляры на Middleware по запросу.
Обычно компоненты данных задаются в XML-дескрипторе экрана внутри элемента <data>
. Их можно инжектировать в контроллер экрана так же, как и визуальные компоненты:
@Inject
private CollectionLoader<Customer> customersDl;
private String customerName;
@Subscribe
protected void onBeforeShow(BeforeShowEvent event) {
customersDl.setParameter("name", customerName)
customersDl.load();
}
Компоненты данных конкретного экрана регистрируются в объекте ScreenData
, который связан с контроллером экрана и доступен с помощью метода getScreenData()
экрана. Этот объект полезен в прикладном коде, когда необходимо загрузить все данные экрана, к примеру:
@Subscribe
protected void onBeforeShow(BeforeShowEvent event) {
getScreenData().loadAll();
}
Обратите внимание, что экраны загружают данные автоматически, если контроллер экрана снабжен аннотацией |