禁用类路径扫描的 Vaadin 14 应用程序中存在多个网格 header 行的问题

Problem with multiple grid header rows in a Vaadin 14 application with classpath scanning disabled

当我使用 appendHeaderRow()prependHeaderRow() 向我的 Vaadin 14 应用程序中的网格添加一个或多个额外的 header 行时,网格仍然只显示一个 header 排。我几乎可以肯定我明白为什么会这样,但解决方案尚不清楚。

在我的项目中,我禁用了 class 路径扫描,并且我正在手动实例化和调用 Vaadin 使用的初始化器,如示例中的 this example. I have a class that implements ServletContextListener and invokes the initializers, just like the VaadinInitializer class 中所述.

为了让 header 行正确显示,我相信我必须将 ColumnGroup.class 传递给 DevModeInitializer,因为它对应于 <vaadin-grid-column-group> 元素当我向 header 添加一个额外的行时,我在网格的 HTML 中看到了这一点。为了使它们正确显示,我不得不对许多其他 Vaadin classes 执行此操作,包括 GridGridSelectionColumn。问题是,与其他 classes 不同,ColumnGroup class 不是 public,因此我无法导入它并将其传递给初始化程序。

有没有人知道任何解决方法,或者是否无法让多个网格 header 行与我的项目配置一起正常工作?

无法引用非public classes 似乎是关于如何避免class路径扫描的整个想法中的一个遗漏。

我相信您可以通过创建一个具有与 ColumnGroup 相同的资源注释的虚拟组件 class 来解决此问题,然后将该 class 与初始化程序一起使用。这应该可以工作,因为 Vaadin 的这一部分只关心找到了哪些注释,但是在哪里找到并不重要。