3.9.1.2. DynamicAttributesPanel

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

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

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

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

    <data>
       <instance id="carDc"
                 class="com.company.ref.entity.Car"
                 view="car-view">
          <loader dynamicAttributes="true"/>
       </instance>
    </data>

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

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

    <dynamicAttributesPanel dataContainer="carDc"
                            cols="2"
                            rows="2"
                            width="AUTO"/>

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

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