4.7.3.2. Категоризируемые сущности

Если сущность реализует интерфейс com.haulmont.cuba.core.entity.Categorized, то для работы с ее динамическими атрибутами можно использовать компонент com.haulmont.cuba.gui.components.RuntimePropertiesFrame. Этот компонент позволяет пользователю выбрать для экземпляра сущности некоторую категорию и указать значения динамических атрибутов этой категории.

Для использования RuntimePropertiesFrame в экране редактирования необходимо выполнить следующее:

  • В секции dsContext необходимо объявить два источника данных:

    • runtimePropsDatasource - специфический источник, в который будут загружены экземпляры CategoryAttributeValue. Атрибут mainDs должен ссылаться на главный источник данных, содержащий редактируемую сущность.

    • обычный collectionDatasource для загрузки списка категорий данного типа сущности.

    Например:

    <dsContext>
      <datasource id="carDs"
          class="com.company.sample.entity.Car"
          view="carEdit"/>
    
      <runtimePropsDatasource id="runtimePropsDs"
          mainDs="carDs"/>
    
      <collectionDatasource id="categories"
          class="com.haulmont.cuba.core.entity.Category"
          view="_local">
        <query>
             select c from sys$Category c where c.entityType='sample$Car'
        </query>
      </collectionDatasource>
    </dsContext>

  • После этого можно включить в XML-дескриптор экрана визуальный компонент runtimeProperties:

    <runtimeProperties id="runtimePropsFrame"
      runtimeDs="runtimePropsDs"
      categoriesDs="categories"/>