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.