EntityPicker.entityLookup не заходит в функцию валидации

Всем привет.

  1. Перевожу проект на jmix2.1. На форме есть entityPicker для показа и выбора связанной сущности. Для него есть функция валидации
Install(to = "sparePartFromISPField.entityLookup", subject = "selectValidator")
    private boolean sparePartFromISPFieldEntityLookupSelectValidator(final LookupView.ValidationContext<Isp> validationContext) {
}

Все работает норм.

  1. Для передачи в экран связанных сущностей доп фильтра добавляю обработчик события (в jmix1.5 использовал screenConfigurer, но здесь его нет):
@Subscribe("sparePartFromISPField.entityLookup")
    public void onSparePartFromISPFieldEntityLookup(final ActionPerformedEvent event) {
        List<Integer> typeISP = List.of(3, 4);
        DialogWindow<IspListView> builder =
                dialogWindows.lookup(sparePartFromISPField).withViewClass(IspListView.class).build();
        builder.getView().setFilterForTypeISP(typeISP);
        builder.open();
    }

и теперь программа перестает заходить установщик валидатора (в sparePartFromISPFieldEntityLookupSelectValidator).

Привязка к sparePartFromISPField.entityLookup как то отвязывает остальные handlers?
Что я делаю не так? Как установить валидатор? Или я не правильно понимаю работу с этим элементом?

Когда вы используете ActionPerformedEvent вы полностью переопределяете работу action Можете посмотреть на код PickerAction (от него наследуется EntityLookupAction). При срабатывании action вызывается функция actionPerform. В этой функции идет проверка есть ли подписка на ActionPerformedEvent, если есть то идет выполнение ActionPerformedEvent иначе дефолтный execute. selectValidator и transformation устанавливаются в методе execute. Все другие параметры через viewInitializer (на скорый взгляд).

Так что вам в builder (как это сделано в EntityLookupAction.execute) нужно установить свой selectValidator. И все остальные настройки какие нужно.

1 симпатия

Спасибо большое-буду разбираться.
Подскажите, пожалуйста, есть какая-то документация, где вот все что Вы рассказали, описано?
Что почитать? Так как официальная документация jmix как то бедновата, мне так кажется.

В Версии 1.5 вроде было что-то про это.

https://docs.jmix.ru/1.x/jmix/1.5/ui/actions/standard-actions/add-action.html#_использование_actionperformedevent

В самом конце.

1 симпатия