Vaadin Flow @Route аннотация с набором макетов ломает стиль макета

Я использую Vaadin 12.0.3 и пытаюсь создать верхнюю строку меню, используя AppLayout, Поэтому я добавил AppLayout, который содержит меню на мой основной вид - DashboardView (который расширяет RouterLayout). Это представление должно быть родительским представлением для MonitoringView который отображает некоторые данные. Поэтому я устанавливаю @Route аннотация к MonitoringView как это: @Route(Monitoring.route, layout = DashboardView::class),

Проблема в том, если я добавлю layout = DashboardView::class к аннотации все моделирование MonitoringView ушел Это означает, что тексты не отображаются, (фоновые) цвета и тени исчезли и так одно. Когда я удаляю часть макета из аннотации, все выглядит хорошо, но тогда я не вижу строку меню сверху.

Вот код для упомянутых классов:

DashboardView, который должен быть родителем для другого представления и содержит меню (AppLayout):

@UIScope
@SpringComponent
@Route("dashboard")
@PageTitle("Dashboard")
class DashboardView() : VerticalLayout(), BeforeEnterObserver, RouterLayout {

    init {
        val appLayout = AppLayout()
        val menu = appLayout.createMenu()

        menu.addMenuItems(
                AppLayoutMenuItem("Page 1", "monitoring"),
                AppLayoutMenuItem("Page 2")
        )

        add(appLayout)
    }
}

MonitoringView который показывает данные мониторинга и должен отображаться под строкой меню, когда пользователь нажимает "Страница 1":

@UIScope
@SpringComponent
@Route("monitoring", layout = DashboardView::class)
class MonitoringView() : VerticalLayout(), BeforeEnterObserver {
    ...
}

1 ответ

Может быть @Route имущество layout нужен класс Java вместо класса Kotlin?

Пытаться layout = DashboardView::class.java,

См. https://kotlinlang.org/docs/reference/reflection.html

Обратите внимание, что ссылка на класс Kotlin отличается от ссылки на класс Java. Чтобы получить ссылку на класс Java, используйте свойство.java для экземпляра KClass.

Другие вопросы по тегам