【问题标题】:Vaadin Flow @Route annotation with layout set breaks layout style带有布局集的 Vaadin Flow @Route 注释打破了布局样式
【发布时间】:2019-06-10 13:29:22
【问题描述】:

我正在使用 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 {
    ...
}

【问题讨论】:

标签: spring-boot kotlin vaadin vaadin-flow vaadin12


【解决方案1】:

也许@Route 属性layout 需要java 类而不是Kotlin 类?

试试layout = DashboardView::class.java

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

请注意,Kotlin 类引用与 Java 类不同 参考。要获取 Java 类引用,请使用 .java 属性 一个 KClass 实例。

【讨论】:

  • 实际上我很惊讶DashboardView::class 在这种情况下甚至可以编译。
  • 不幸的是,相反,DashboardView::class.java 无法编译,因为它期待 KClass<out RouterLayout> 但感谢您的帮助!
  • 我在使用这个时得到的错误是:类型推断失败。预期类型不匹配:必需:KClass 找到:Class
猜你喜欢
  • 2019-05-19
  • 2022-12-12
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 2012-06-24
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多