Экран вызывает BeforeShowEvent и ReadyEvent при попытке открыть его если он уже открыт

Есть сущность

@JmixEntity(name = "jt_TestEntity")
open class TestEntity {
    @JmixGeneratedValue
    @JmixId
    var id: UUID? = null
}

Экран:

    <data>
        <collection id="testDc" class="com.company.test.entity.TestEntity"/>
    </data>
    <layout>
        <dataGrid id="dataGrid" dataContainer="testDc">
            <columns>
                <column property="id"/>
            </columns>
        </dataGrid>
    </layout>
    @ViewComponent
    private lateinit var dataGrid: DataGrid<TestEntity>

    @Autowired
    private lateinit var metadata: Metadata

    @ViewComponent
    private lateinit var testDc: CollectionContainer<TestEntity>

    @Subscribe
    private fun onBeforeShow(event: BeforeShowEvent) {
        dataGrid.addColumn {
            "test-${it.id}"
        }.setHeader("test")

        generateData()
    }

    private fun generateData() {
        val testEntities = List(10) {
            metadata.create(TestEntity::class.java)
        }
        testDc.mutableItems.addAll(testEntities)
    }

При первом открытии экрана все нормально:
image
Если не закрывать экран и попытаться вновь нажать на него в пункте меню то видимо экран не закрывается и вновь вызывает BeforeShowEvent:
image

Попробовал перенести код из BeforeShowEvent в ReadyEvent - то-же самое
С InitEvent все нормально.

jmix 2.0.2

Добрый день.

Это не баг. События BeforeShowEvent и ReadyEvent отправлятся из Ваадиновсих событий навигации BeforeEnterEvent и AfterNavigationEvent соотвественно. В случае клика на пункт меню, который сделан на базе Ваадиновского компонента com.vaadin.flow.router.RouterLink навигация действительно происходит и эти события отрабатывают. Поэтому добавлять компоненты на экран лучше из слушателя события InitEvent.

Глеб