Table lookup validator

Собственно вопрос практически из этой темы:
https://www.cuba-platform.ru/discuss/t/lookuppickerfield-lookup-validator/914/2

За исключением того, что провалидировтаь дополнительно нужно выбор в таблицу (многие-ко-многим).
Подскажите, пожалуйста, как?

План был следующий: во фрейме с таблицей переопределить действие addAction для передачи мапы параметров в окно выбора. Попробовал так - не получилось. Мапа не принимается со стороны окна выбора:

    @Override
    public void init(Map<String, Object> params) {
        super.init(params);
        unitsTable.addAction(new AddAction(unitsTable){
            @Override
            public void setWindowParams(Map<String, Object> windowParams) {
                super.setWindowParams(windowParams);
                windowParams.put("unitStatusAllowed", Enum_UnitStatus.Ready);
            }
        });
    }

В окне выбора:

    @Override
    public void initLookupLayout() {
        super.initLookupLayout();
        setLookupValidator(() -> {
            if (unitsDs.getItem().getStatus() == Enum_UnitStatus.Installed) {
                showNotification("is`n valid", NotificationType.WARNING);
                return false;
            }
            else return true;
        });
    }

С этим проблем нет, работает.
Подскажите, как корректно передать параметры.

Получилось так:

            @Override
            protected Map<String, Object> prepareWindowParams() {
                return ParamsMap.of("unitStatusAllowed", Enum_UnitStatus.Ready);
            }
        });

Если кто-то прокомментирует по поводу правильности, буду признателен.

Добрый день!

В вашем случае нет смысла переопределять AddAction. Попробуйте просто проставить WindowParams в AddAction, например:

@Named("AddAction unitsTable.add")
private AddAction unitsTableAdd;

@Override
public void init(Map<String, Object> params) {
    unitsTableAdd.setWindowParams(
            ParamsMap.of("unitStatusAllowed", Enum_UnitStatus.Ready));
}
1 симпатия