4.7.4.1. Управление динамическими атрибутами

Управление категориями и описаниями атрибутов осуществляется с помощью специальных экранов, доступных через меню Administration → Categories.

categoryBrowser
Рисунок 25. Экран списка категорий

Редактор категорий позволяет создать категорию для выбранного типа сущности и добавить в нее набор динамических атрибутов. Для категории обязательно указывается имя и соответствующий тип сущности. Флажок Default указывает, что данная категория будет автоматически выбрана для нового экземпляра сущности, реализующей интерфейс Categorized.

categoryEditor
Рисунок 26. Экран редактирования категории

Редактор динамического атрибута позволяет задать имя, системный код, тип значения и значение атрибута по умолчанию.

runtimePropertyEditor
Рисунок 27. Редактор динамического атрибута

Динамический атрибут также имеет настройки видимости, описывающие, на каких экранах его нужно отображать. По умолчанию атрибут не отображается нигде.

runtimePropertyVisibility
Рисунок 28. Настройки видимости динамического атрибута

Кроме экрана можно также указать компонент, в котором атрибут должен появляться (например, для экранов, где несколько компонентов FieldGroup показывают поля одной и той же сущности).

Если атрибут отмечен как видимый на каком-либо экране, он автоматически отобразится во всех группах полей и таблицах, отображающих объекты данного типа в данном экране.

Доступ к динамическим атрибутам также может быть ограничен через настройки в ролях пользователей. Настройки осуществляются так же, как для обычных атрибутов.

Для того чтобы изменения в атрибутах и настройках видимости вступили в силу, необходимо нажать кнопку Применить изменения на экране со списком категорий. Изменения также можно применить через Administration → JMX Console, вызвав метод clearDynamicAttributesCache() JMX бина app-core.cuba:type=CachingFacade.

Ниже изображен динамический атрибут, добавленный в экран автоматически путем задания настроек отображения атрибута:

runtimePropsApplyChanges

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

  • В секции dsContext XML-дескриптора экрана для источника данных с загружаемой сущностью (сущностями) установить в true признак loadDynamicAttributes для источника данных с загружаемой сущностью (сущностями), например:

    <dsContext>
      <datasource id="carDs" class="com.company.sample.entity.Car" view="_local" loadDynamicAttributes="true"/>
    </dsContext>
  • В описании визуального компонента в качестве property нужно использовать код динамического атрибута с префиксом +:

    <textField id="numberOfSeats" datasource="carDs" property="+numberOfSeats"/>