Полная перегрузка элемента в xml-описании по идентификатору

Не хватает возможности полностью переопределить элемент при перегрузке экрана. Примеры возникновения таких ситуаций:

  1. Изменение типа элемента (в этом случае придется полностью копировать во второй экран описание из первого):
    screen-one.xml
<window xmlns="http://schemas.haulmont.com/cuba/5.4/window.xsd">
    <dsContext>
        <collectionDatasource id="myCollectionDs" ... > ... </collectionDatasource>
    </dsContext>
    <layout>
          ...
         <table>
             ...
             <rows datasource="myCollectionDs">
          </table>
    </layout>
</window>

screen-two.xml

<window xmlns="http://schemas.haulmont.com/cuba/5.4/window.xsd"
                extends="org/company/product/gui/common/screen-one.xml">
    <dsContext>
        <groupDatasource id="myCollectionDs" ... > ... </groupDatasource >
    </dsContext>
    <layout>
          ...
         <groupTable>
             ...
             <rows datasource="myCollectionDs">
          </groupTable>
    </layout>
</window>
  1. Переописание вложенных элементов без идентификаторов (здесь будет необходимо изменить видимость старых компонентов и добавить новые)
<window xmlns="http://schemas.haulmont.com/cuba/5.4/window.xsd"
        xmlns:ext="http://schemas.haulmont.com/cuba/5.4/window-ext.xsd"
        extends="com/haulmont/workflow/gui/app/proc/proc-edit.xml">
    <layout>
        <!-- описание этого элемента перегрузить не получится из-за вложенных vbox без идентификаторов -->
        <split id="rolesSplit" orientation="horizontal" width="100%">
        </split>
    </layout>

Аргумент, отвечающий за перегрузку можно описать, например, в window-ext.xsd

<split id="rolesSplit" orientation="horizontal" width="100%" ext:override="true">
    <!-- родительское описание упраздняется, начинаем с чистого листа -->
</split>

Мы сознательно не давали такой возможности чтобы не подталкивать разработчиков к бездумному переопределению больших кусков экранов, так как это опасно ошибками в runtime - логика контроллера может сломаться если вы удалите или измените тип компонентов.
Однако я согласен что иногда без полного переопределения элемента сложно обойтись, поэтому мы еще раз подумаем над этим вопросом.

А что сложного. Сделал новую разметку копией из строй. внес правки. Подправил унаследованный контроллер Да, это иногда может быть большой (длинный) файл. Но зато целиком отвечаешь за то как экран выглядит и работает.
Если сравнить затраты времени, то копирование разметки в разы меньше диагностики инцедентов. Да и пред пользователями как-то не удобно.

Добрый день! Можно поподробнее? У меня как раз возникла такая потребность.
Необходимо во всех создаваемых GroupTable определять новый параметр, типа “CanLocked” (boolean).
Я создала новую window.xsd, добавила в нее новый атрибут.
Создала новый интерфейс - наследник от GroupTable, добавила в него метод для установки этого атрибута.
Но как сделать, чтобы в самом интерфейсе студии появился этот атрибут при создании GroupTable?

Галина!

Я думаю Вам надо посмотреть в документации на раздел Поддержка собственных компонентов в CUBA Studio.

1 симпатия