Выбор lookup`а в entityPicker

Здравствуйте, в jmix 2.0 убрали возможность у action’а entityPicker.lookup вызвать метод setScreenId, для того, чтобы выбрать какой lookup я хочу открыть при нажатии на кнопку. У меня entityPIcker создан для поля класса. Это поле является объектом MappedSupperclass’а с join стратегией наследования. Мне нужно, чтобы по выбору одного из наследников этого класса при помощи RadioButton у entityPicker открылся lookup этого наследника. Как я могу это сделать? При указании MetaData падает ошибка java.lang.IllegalStateException: ValueSource is not null.

Добрый день.

В Jmix 2, Screen был переименован во View. Весь соотвествующий API был так же переименован. В Вашем случае вам надо задать viewId или viewClass.

Глеб

Добрый день! Проверил свойство EntityPicker и Action, нет таких свойств.

Добрый день,

Не могли бы Вы приложить пример кода, что вы пытаетесь сделать и что не получается?

Глеб

В моём проекте в классе WayBillDetailWiew я хочу реализовать логику открытия экрана одного из наследников класса поля consignee. consignee - объект класса Customer, который имеет join наследования. Я хочу, чтобы по переключению RadioButton открывался lookup выбранного класса-наследника. Как я могу это сделать? проект прикрепляю ниже.

Добрый день.

Если необходимо задать фиксированный экран выбора, отличный от экрана по-умолчанию, то удобный способ это задать через XML:

<entityPicker id="userPicker" metaClass="User">
    <actions>
        <action id="lookup" type="entity_lookup">
            <properties>
                <property name="viewId" value="User.list"/>
            </properties>
        </action>
        <action id="clear" type="entity_clear"/>
    </actions>
</entityPicker>

Если, как в Вашем случае, экран выбирается динамически, то необходимо подписаться на ActionPerformedEvent и открыть экран выбора программно, например:

@Subscribe("userPicker.lookup")
public void onUserPickerLookup(final ActionPerformedEvent event) {
    dialogWindows.lookup(userPicker)
            .withViewClass(UserListView.class)
            .open();
}

Как я отмечал ранее, все withScreenXxx были переименованы в withViewXxx. Подробнее про открытие экранов можно найти в документации.

Глеб