数据组件
数据组件是界面的不可见元素,提供加载数据、绑定数据到数据感知可视化组件以及将数据保存至数据存储的功能。有以下类型数据组件:
-
Containers(数据容器) 作为实体和具有数据感知能力的可视化组件之间粘合剂。不同类型的容器包含单一实体实例或者实体的集合。
-
Loaders(数据加载器) 加载数据至容器。
-
DataContext(数据上下文) 跟踪实体变更,并根据需求保存变更的实体。
通常,数据组件在界面 XML 描述的 <data>
元素定义:
<data readOnly="true">
<collection id="departmentsDc"
class="ui.ex1.entity.Department">
<fetchPlan extends="_base">
<property name="employees" fetchPlan="_base"/>
</fetchPlan>
<loader id="departmentsDl">
<query>
<![CDATA[select e from uiex1_Department e]]>
<condition>
<c:jpql>
<c:where>e.name like :name</c:where>
</c:jpql>
</condition>
</query>
</loader>
<collection id="employeesDc" property="employees"/>
</collection>
</data>
数据组件可以与可视化组件以相同的方式注入到控制器中:
@Autowired
private CollectionLoader<Department> departmentsDl;
private String departmentName;
@Subscribe
public void onBeforeShow(BeforeShowEvent event) {
departmentsDl.setParameter("name", departmentName);
departmentsDl.load();
}
特定界面的数据组件注册在 ScreenData
对象中,这个对象跟控制器关联,可以通过控制器的 getScreenData()
方法获取。这个对象在需要加载界面所有的数据的时候很有用,示例:
@Subscribe
public void onAfterShow(AfterShowEvent event) {
getScreenData().loadAll();
}
使用 DataLoadCoordinator facet 以声明式的方式将数据加载器和数据容器、可视化组件、界面事件进行关联。除非在需要设置一些加载参数的时候,才使用编程的方法,如 下面 例子所示。 |
本页是否有帮助?
感谢您的反馈