Компоненты данных
Компоненты данных – это невизуальные элементы экрана, которые обеспечивают загрузку данных, привязку их к визуальным компонентам и сохранение измененных экземпляров обратно в хранилище данных.
-
Контейнеры обеспечивают тонкий слой между сущностями и визуальными компонентами, связанными с данными (data-aware). Разные типы контейнеров могут хранить один экземпляр или коллекцию экземпляров сущностей.
-
Загрузчики загружают данные в контейнеры.
-
DataContext отслеживает изменения сущностей и сохраняет измененные экземпляры по запросу.
Обычно компоненты данных задаются в XML-дескрипторе экрана внутри элемента <data>
:
<data readOnly="true">
<collection id="departmentsDc"
class="com.company.onboarding.entity.Department">
<fetchPlan extends="_base">
<property name="hrManager" fetchPlan="_base"/>
</fetchPlan>
<loader id="departmentsDl">
<query>
<![CDATA[select e from Department e]]>
</query>
</loader>
</collection>
</data>
Компоненты данных можно инжектировать в контроллер экрана так же, как и визуальные компоненты:
@ViewComponent
private CollectionContainer<Department> departmentsDc;
Компоненты данных конкретного экрана регистрируются в объекте ViewData
, который связан с контроллером экрана и доступен с помощью метода getViewData()
. Этот объект полезен в прикладном коде, когда необходимо загрузить все данные экрана, к примеру:
@Subscribe
public void onReady(final ReadyEvent event) {
getViewData().loadAll();
}
Используйте фасет DataLoadCoordinator для декларативного связывания загрузчиков данных с контейнерами данных, визуальными компонентами и событиями экрана. |