Spring Boot应用中如何静态访问Vaadin /frontend资源?
Vaadin Flow中静态访问/frontend/styles下样式文件的方法
问题描述
Vaadin Flow示例规定样式文件应放置于
/frontend/styles目录,该目录下的文件可在Vaadin视图/组件中导入,但我还需静态访问其中部分文件。请问访问这些样式文件的正确Web URL是什么?或者是否无法实现?
我尝试了以下URL,但均无效:
- http://host/styles
- http://host/frontend/styles
我了解/src/main/resources/META-INF/resources目录也可提供静态资源,但我希望避免同一文件存在多份副本。
补充说明:我要打印的页面是纯HTML页面,通过JS弹窗渲染:var a = window.open('', '', 'height=1000, width=1500'); a.document.write('<html>...</html>');该HTML页面包含指向CSS的链接标签:
<link type="text/css" rel="stylesheet" href="/styles/print.css" />
解决方案
- 直接使用编译后路径:Vaadin在构建时会把
/frontend目录下的资源处理后放到/VAADIN/build/frontend/路径下,所以你需要的print.css对应的可访问URL是/VAADIN/build/frontend/styles/print.css,把HTML里的链接标签href替换成这个路径即可正常访问。 - 自动同步避免文件重复:如果偏好使用
/styles/print.css这种简洁路径,可通过构建工具配置自动同步文件:- Maven:配置
maven-resources-plugin,添加复制规则,将/frontend/styles下指定文件同步到/src/main/resources/META-INF/resources/styles目录,构建时自动执行,无需手动复制。 - Gradle:编写
copy任务,实现相同的文件同步逻辑,让源文件仅在/frontend/styles维护,静态访问目录自动获取最新文件。
- Maven:配置
内容的提问来源于stack exchange,提问作者The Shoe Shiner
相关产品推荐
相关产品推荐

