Создание связанной сущности

У меня есть следующая структура данных: Parent ← Child (Многие-к-одному). Я создал ParentBrowser и ChildBrowser, в ParentBrowser использовал действие related для просмотра списка Child-ов, ссылающихся на выбранного Parent-а.

Можно ли как-то сделать так, чтобы при создании нового Child-а в режиме related этому Child-у сразу подставлялся тот Parent, связанные сущности которого я просматриваю? А не подставлять вручную к каждому Child-у одного и того же Parent-а через EntityPicker?

Пока я пришел к тому, что редактор связанной сущности нужно открывать программно, в ChildBrowse:

    @Subscribe( "createBtn" )
    public void onCreateBtnClick( Button.ClickEvent event ) {
        ChildEdit edit = screens.create( ChildEdit.class );
        edit.getEditedEntity().setParent( /*где взять этого Родителя?*/ );
        screens.show( edit );
    }

Но пока не могу понять, как в ChildBrowser получить текущего Parent?

Буду благодарен за любые подсказки.

Это называется Composition
Пример тут: 5. Работа с данными в пользовательском интерфейсе :: Документация Jmix

Если вам не подходит вариант с композицией, то вместо стандартного компонента RelatedEntities лучше использовать собственную кнопку и код, открывающий бразузер Child с передачей ему Parent в параметре, см. Передача параметров в экраны. Этот параметр можно использовать и для фильтрации записей Child, и для инициализации новой записи.

Компонент RelatedEntities предназначен для быстрого анализа связанных сущностей, а не для полноценной работы с графами объектов. Вытащить Parent из фильтра можно, но это будет завязкой на детали реализации RelatedEntities и фильтра, и может сломаться в будущем.

1 симпатия

Да, я пока что сделал утильный метод, который бегает по фильтру и ищет значения нужного типа (Parent.class), и при открытии редактора подставляет его. Спасибо!

1 симпатия