Vaadin Flow应用适配Spring Boot 2.6.0后前端资源加载异常咨询
Vaadin 21 + Spring Boot 2.6.0 静态资源加载异常解决方案
问题根因
Spring Boot 2.6.0 默认将路径匹配策略从 AntPathMatcher 调整为 PathPatternParser,而 Vaadin 21 版本的静态资源处理逻辑未适配该新匹配策略,导致符合Vaadin规则的静态资源路径无法被正确映射,无报错日志是因为请求直接被404拦截但未触发Vaadin侧的日志输出。
修复方案
可按优先级选择以下任意一种修复方式:
- 方案1:回退路径匹配策略为旧版兼容模式
在application.properties(或application.yml)中添加如下配置:
该配置改动最小,适配Vaadin 21所有版本的现有逻辑,不需要修改其他业务代码。spring.mvc.pathmatch.matching-strategy=ant_path_matcher - 方案2:升级Vaadin版本至兼容分支
直接将Vaadin版本升级到21.0.9及以上的21.x维护版本,该版本及后续已官方适配Spring Boot 2.6.x的路径匹配规则,不需要修改Spring Boot配置项。 - 方案3:手动新增静态资源映射规则
如果不想修改全局路径匹配策略也不想升级Vaadin版本,可以自定义WebMvc配置类,手动添加Vaadin静态资源的映射规则:@Configuration public class StaticResourceConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/VAADIN/**", "/frontend/**") .addResourceLocations("classpath:/META-INF/resources/VAADIN/", "classpath:/META-INF/resources/frontend/"); } }
验证方式
修复后清理浏览器缓存重新加载页面,检查图片资源的请求状态码是否为200,资源可正常加载即可。
内容的提问来源于stack exchange,提问作者AISDev
相关产品推荐
相关产品推荐

