Проблема с TabSheet с начальным Visible=false

Используется БД Oracle.
Есть основной ListView Grid и TabSheet c двумя табами, в каждом из которых своя таблица.
image

Когда у TabSheet и табов Visible=true, все отлично: данные отображаются во вкладках и меняются при изменении текущей записи в основном гриде.
При выборе пункта меню становится активным соответствующий Tab.

Вызов из меню первого таба:

private void showTabContacts() {
    if (!tabSheet.isVisible())
        tabSheet.setVisible(true);
    if (!tabContacts.isVisible()) {
        tabSheet.setSelectedTab(tabContacts);
        tabContacts.setVisible(true);
        Clients clients = clientsesDataGrid.getSingleSelectedItem();
        if (clients != null) {
            contactsDl.load();
        }
    } 
    tabSheet.setSelectedTab(tabContacts);
}

Аналогично вызывается второй, меняется только название таба.

Нужно, чтобы сначала TabSheet и табы не были видны и становились видимыми при выборе соответствующего пункта меню.
Если установить в UI для них Visible = false и после запуска выбрать пункт меню для загрузки таба, почему-то происходит загрузка обеих таблиц на одну вкладку.
На скриншоте экран после вызова из меню первым второго таба:
image

При вызове первого таба он отображается левее второго с загруженными данными в соответствующей ему таблице на вкладке, т.е. заполняется пустая таблица на скриншоте и на обоих табах отображается одна и та же информация.
P.S. TabSheet с lazy tabs не подходит.

DepartmentListView.java (2.4 КБ)
department-list-view.xml (3.7 КБ)
Вроде удалось воспроизвести проблему с загрузкой обеих таблиц на одну вкладку для учебного проекта Onbording.
В табах DeparmentListView продублирована таблица departmentsDataGrid.
Результат:
image

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

После первичного анализа проблемы могу сделать вывод, что она находится на стороне Vaadin, поскольку в нашем API все происходит корректно.

Я пытался найти связанную задачу у команды Vaadin, но, к сожалению, безуспешно.

В любом случае, в новой версии фреймворка Jmix 2.2.0 данная проблема не воспроизводится.
Релиз 2.2.0 запланирован на вторую половину февраля. Версия 2.2.0-RC будет опубликована в ближайшую неделю.

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

Jmix version: 2.1.3
Jmix Studio plugin version: 2.2.NIGHTLY1299-233
IntelliJ version: IntelliJ IDEA 2023.3.3 (Community Edition)

Ничего не изменилось.
Таблица, предназначенная для вкладки, должна открываться в своей вкладке.
А открываются обе таблицы в каждой вкладке.

Судя по предоставленной Вами информации, Ваша версия фреймворка Jmix - 2.1.3, что является последней стабильной версией.
Как я писал ранее, эта проблема решена в версии 2.2.0.

Пока что для общего пользования доступна версия 2.2.0-RC1. Вы можете попробовать обновить свой проект на эту версию, либо же подождать стабильного релиза. Он запланирован в феврале.

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

Jmix version: 2.2.0-RC1
Jmix Studio plugin version: 2.2.NIGHTLY1299-233
IntelliJ version: IntelliJ IDEA 2023.3.3 (Community Edition)

Да, когда у TabSheet и табов visible=false все теперь нормально работает.
Но если у TabSheet Visible=true и вкладки скрыты, сначала где д.б. вкладки крутится значок загрузки. Это не критично. Но если открыть через меню первый Tab, он открывается пустым без таблицы и продолжает отображаться значок загрузки. Если далее через меню открыть tab2, в него загружается правильно. При переключении на tab1 через меню или мышкой в нем тогда тоже подгружается таблица, т.е. начинает работать правильно.

Я провёл расследование и выяснил, что проблема находится на стороне Vaadin Flow.
Ваш кейс получилось воспроизвести на их чистом проекте, без намёка на Jmix Framework.

Создал задачу им в баг трекере:A tab in a tabsheet component can't be visible if it is initially hidden · Issue #6072 · vaadin/flow-components · GitHub
Остаётся только ждать, мяч на их стороне.
Мы регулярно обновляем версии Vaadin, поэтому существует вероятность получить этот фикс уже в следующем багфиксе, например 2.2.1.

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

1 симпатия