java - 如何在 Spring Boot 中获取静态资源(js、css)作为 ClassPathResource?

标签 java spring spring-boot thymeleaf static-content

我需要能够从 Spring Boot 模板生成 PDF。为此,我使用 PDF 渲染库 (FlyingSaucer),它基本上可以正确完成工作。然而,存在一个问题:当页面上有“href”标签时,当 PDF 渲染器尝试渲染 HTML 时,它们无法正确解析。例如,如果我有以下代码:

<link rel="stylesheet" type="text/css" th:href="@{/css/index.css}" />

它在浏览器中正确解析,但是当我尝试使用以下代码将其作为 ClassPath 资源检索时:

new ClassPathResource("/css/index").getInputStream()

Spring Boot 说该文件不存在。这对我来说很奇怪,因为我认为 Spring Boot 将所有静态内容添加到类路径中。

下面是我的项目的文件夹结构,(我认为)遵循正确的 Spring Boot 约定:

Project Structure

我能否获取某些 Spring 资源的句柄(通过 Autowiring 、应用程序上下文等)来解析这些 URL,就像浏览器请求它们时一样?我可能可以通过将“resources/static/”硬编码到 url 字符串的开头来解决这个问题,但我更喜欢更动态的解决方案。

最佳答案

使用这个:

new ClassPathResource("static/css/index.css").getInputStream();

关于java - 如何在 Spring Boot 中获取静态资源(js、css)作为 ClassPathResource?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41605684/

相关文章:

Java 转换时区

java - 无法解析encodetoString

java - Db2 表的 DDL 生成

java - 子表行的 Hibernate 批处理

java - 无法解析 MVC View Spring MVC 3

java - 为什么我在包中缺少最后一级目录时却可以编译它?

java - 如何使用 Spring Boot 从 java 属性文件中读取数据

spring - 在 Spring 中使用 CrudRepositoty 保存具有 NULL 值的实体

java - IntelliJ - 编码风格

spring - 如何使用 spring ehcache 抽象动态创建缓存