4.7.4.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"/>