单一实例容器
InstanceContainer 接口是数据容器层次结构的根节点。用来容纳单一实体实例。
在 XML 描述中可以这样定义 InstanceContainer:
<instance id="departmentDc"
          class="com.company.onboarding.entity.Department">
    <fetchPlan extends="_base">
        <property name="hrManager" fetchPlan="_base"/>
    </fetchPlan>
    <loader id="departmentDl"/>
</instance>方法
InstanceContainer 有下列方法:
- 
setItem()- 为容器设置一个实体实例。
- 
getItem()- 返回容器中保存的实例。如果容器是空的,此方法会抛出异常。所以需要在确保容器有设置实体的时候才使用此方法,不需要检查返回值是否为null。
- 
getItemOrNull()- 返回容器中保存的实例。如果容器是空的,此方法会返回null。所以在使用此方法返回值之前总是需要先检查返回的是否是null。
- 
getEntityMetaClass()- 返回能存储在此容器的实体的 metaclass。
- 
setFetchPlan- 设置在加载容器实体时需要使用的 fetch plan。需要注意的是,容器本身不会加载数据,所以这个属性只是为此容器关联的数据加载器设定 fetch plan。
- 
getFetchPlan()- 返回在加载容器实体时需要使用的 fetch plan。
事件
使用 InstanceContainer 接口可以注册以下事件的监听器:
- 
ItemPropertyChangeEvent会在容器中存储的实例的属性值发生变化时发送。下面例子订阅了该事件,容器在界面 XML 中使用 iddepartmentDc定义:@Subscribe(id = "departmentDc", target = Target.DATA_CONTAINER) public void onDepartmentDcItemPropertyChange( final InstanceContainer.ItemPropertyChangeEvent<Department> event) { Department department = event.getItem(); String changedProperty = event.getProperty(); Object currentValue = event.getValue(); Object previousValue = event.getPrevValue(); // ... }
- 
ItemChangeEvent会在为容器设置另一个实例(或者null)时发送。下面例子订阅了该事件,容器在界面 XML 中使用 iddepartmentDc定义:@Subscribe(id = "departmentDc", target = Target.DATA_CONTAINER) public void onDepartmentDcItemChange(final InstanceContainer.ItemChangeEvent<Department> event) { Department department = event.getItem(); Department previouslySelectedDepartment = event.getPrevItem(); // ... }
本页是否有帮助?
        
        
    感谢您的反馈