Как передать параметр при создании экрана

Здравствуйте. Версия 1.5.5.
У меня есть такой метод, где я создаю LinkButton у каждой группы для создания и открытия экрана с таблицей.
Я хочу чтобы открывался экран OpasContactsBrowse не со всеми данными в таблице а только с теми, которые относятся к конкретной группе где был создан LinkButton.
Для этого я хочу передать параметр readinessMonitor.getName() в OpasContactsBrowse , где в дальнейшем будет вызываться loader с нужным параметром для фильтрации значений в таблице.
Проблема в том, что в моем методе, сначала создается экран, в котором срабатывает метод
public void setFilterParam(String nameGroup) {
this.nameGroup = nameGroup;
}, где nameGroup == null

а потом сетается значение readinessMonitor.getName() и в созданный экран оно уже не приходит. Как можно было бы реализовать эту логику по другому?

    private void createOneCell(ReadinessMonitor readinessMonitor) {

        Label<String> nameOrganization = createLabel(readinessMonitor.getName(), "groupRDName");
        LinkButton linkButton = createLinkButton(JmixIcon.EXTERNAL_LINK.source(), "groupRDLink");
        linkButton.addClickListener(clickEvent -> {

          OpasContactsBrowse screen = screenBuilders.screen(this)
                    .withScreenClass(OpasContactsBrowse.class)
                    .withOpenMode(OpenMode.THIS_TAB)
                    .build();
         opasContactsBrowse.setFilterParam(readinessMonitor.getName());
            screen.show();
        });
}

Здравствуйте

При установке параметра вашим способом происходит следующая последовательность событий:

  1. Публикуется InitEvent
  2. Происходит setFilterParam
  3. Публикуется BeforeShowEvent
  4. Публикуется AfterShowEvent

Таким образом вы можете воспользоваться установленной переменной в момент BeforeShowEvent, либо AfterShowEvent.

Также, если вы хотите использовать параметр уже на InitEvent, то советую ознакомиться с другими способами передачи параметров в экраны в нашей документации: Открытие экранов :: Документация Jmix

Возможно, вам подойдёт использование ScreenOptions. Это не то, чтобы рекомендуемый случай, это скорее устаревший способ, но в некоторых случаях он подходит.

Также, не совсем понял следующий момент:

Т.к. я вижу в вашем коде только один вызов этого метода: opasContactsBrowse.setFilterParam(readinessMonitor.getName());

Могу сделать вывод, что значение readinessMonitor.getName() равняется null. Если это не валидное значение для вашего случая, советую посмотреть в дебаггере на трейс до точки останова и проанализировать, почему приходит нулевое значение.

С уважением,
Дмитрий