数据组件

数据组件是视图中的非可视化元素,数据组件可以加载数据,将数据与数据感知可视化组件进行绑定以及保存修改的数据至数据存储。

一般来说,数据组件在视图 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" readOnly="true">
            <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 facet 可以声明式地将数据加载器与数据容器、可视化组件以及视图事件进行连接。