3.9.1.2. DynamicAttributesPanel

如果实体实现了 com.haulmont.cuba.core.entity.Categorized 接口,则可以使用 DynamicAttributesPanel 组件来显示该实体的动态属性。此组件允许用户为特定实体实例选择类别,并指定此类别的动态属性的值。

要在编辑界面中使用 DynamicAttributesPanel 组件,请执行以下操作:

  • 在实体中,需要在视图中包含 category 属性:

    1. <view entity="ref_Car" name="car-view" extends="_local">
    2. <property name="category" view="_minimal"/>
    3. </view>
  • data 部分,申明一个InstanceContainer:

    1. <data>
    2. <instance id="carDc"
    3. class="com.company.ref.entity.Car"
    4. view="car-view">
    5. <loader dynamicAttributes="true"/>
    6. </instance>
    7. </data>

    设置 loaderdynamicAttributes 参数为 true,以便加载实体的动态属性。动态属性不是默认加载的。

  • 现在可以将 dynamicAttributesPanel 可视化组件添加在界面的 XML 描述中:

    1. <dynamicAttributesPanel dataContainer="carDc"
    2. cols="2"
    3. rows="2"
    4. width="AUTO"/>

    可以使用 cols 参数设置展示动态属性的列数。或者也可以使用 rows 来指定行数(但是这种情况下,列数会自动计算)。默认情况下,所有属性会显示在一列内。

    在分类编辑器的 Attributes Location 标签页,可以更灵活的自定义动态属性的位置。如此做的话,colsrows 参数的值会被忽略。