Обработка событий в экранах

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

В дескрипторе экрана просмотра

<data readOnly="true">
    <collection id="bsDc" class="класс" view="view">
        <loader id="bsDl">
            <query><![CDATA[запрос]]></query>
        </loader>
    </collection>
</data>

Если самому сделать кнопку и выполнять действие

bsDl.load();

то данные обновятся. Как можно обновить весь список после редактирования одной строки. Пробовал сделать использую Events.

В контроллере экрана редактирования

@Inject
private Events events;

@Subscribe
private void onInit(InitEvent event) {
    DemoEvent ev  = new DemoEvent(this, "TestEvent");
    events.publish(ev);
}

В контроллере экрана просмотра

@EventListener
void onDemo (DemoEvent event) {
    notifications.create()
            .withCaption("User is removed " + event.getStrEv())
            .show();
    bsDl.load();
}

Сам класс события

public class DemoEvent extends ApplicationEvent implements UiEvent {

    private String strEv;

    public DemoEvent(Object source, String strEv) {
        super(source);
        this.strEv = strEv;
    }

    public String getStrEv() {
        return strEv;
    }
}

И все работает. Но если использовать какое то другое событие в контроллере экрана редактирования то оно не прилетает на экран просмотра. А мне нужно его прокинуть в момент закрытия окна после коммита данных. Как мне это можно сделать?
Может быть есть возможность из экрана редактирования получить экземпляр открытого ранее экрана просмотра и вызвать публичный метод на экране просмотра который и обновил бы список?

Пока нашел только одно решение:
переопределил действие кнопки edit в контроллере экрана просмотра и от туда с помощью screens.create создаю экран и вешаю прослушиватель

screen.addAfterCloseListener(afterCloseEvent -> {перезагрузка данных});

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

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

А все таки. Очень хотелось бы узнать почему у меня не срабатывали события?

Если я верно понял вашу проблему, то она та же, что в топике

К сожалению, по описанию сложно сказать, что точно пошло не так.

1 симпатия