Vaadin TreeGrid部署至Tomcat后丢失树形结构问题求助
Vaadin TreeGrid部署Tomcat后树形结构丢失的解决方法
本地IntelliJ开发环境中Vaadin TreeGrid显示正常,但部署至Tomcat服务器后,根节点、子节点与叶子节点X方向间距一致,树形层级结构丢失,相关代码片段如下:
textInsertableBrowserGrid = new TreeGrid<>(); textInsertableBrowserGrid.setSizeFull(); textInsertableBrowserGrid.setWidth(TEXT_AREA_WIDTH, Unit.PIXELS); textInsertableBrowserGrid.setHeight(TEXT_BROWSER_HEIGHT, Unit.PIXELS); textInsertableBrowserGrid.setItems(textInsertableList, item -> ((TextFolderOrNode) item).getChildrenSortForNewLaw(false, law)); textInsertableBrowserGrid.addHierarchyColumn(TreeItem::getName); textInsertableBrowserGrid.setVisible(true);
解决步骤:
- 确认Vaadin前端资源打包完整:检查生成的war包,确保
META-INF/resources/VAADIN/目录下的所有前端资源(包括样式、组件脚本)都已正确打包,缺失的样式文件会导致树形缩进失效。 - 强制清除浏览器缓存:服务器部署后,浏览器可能缓存了旧的前端资源,使用
Ctrl+Shift+R(Chrome/Firefox)强制刷新页面,加载最新的资源文件。 - 校验数据源层级逻辑:验证
getChildrenSortForNewLaw方法在服务器环境下的返回值,确保子节点集合正确返回,避免因环境差异导致数据源层级结构异常。 - 核对版本兼容性:确认使用的Vaadin版本与Tomcat版本兼容(例如Vaadin 14+需搭配Tomcat 8.5及以上版本),版本不匹配可能引发前端渲染问题。
- 手动添加缩进样式(兜底方案):如果上述方法无效,可通过自定义CSS强制设置节点缩进:
vaadin-tree-grid-tree-toggle { margin-left: var(--lumo-space-s); } vaadin-tree-grid-tree-toggle[level="1"] { margin-left: calc(var(--lumo-space-s) * 2); } vaadin-tree-grid-tree-toggle[level="2"] { margin-left: calc(var(--lumo-space-s) * 3); } /* 根据实际层级需求继续扩展 */
将该样式添加到项目全局CSS文件中,确保部署时被正确加载。
内容的提问来源于stack exchange,提问作者Eyvind Almqvist
相关产品推荐
相关产品推荐

