【发布时间】:2021-01-23 09:19:45
【问题描述】:
我正在开发 Spring Boot 2 + thymeleaf Web 应用程序。我想渲染一个模板,它是来自 jar 文件的静态资源。我收到 js、CSS 和 message.properties 文件的 404 错误,而模板正在浏览器上呈现,但相关的 js、css 没有。为了从 jar 文件中渲染模板,我配置了 ClassLoaderTemplateResolver,如下所述:
@Bean
public ClassLoaderTemplateResolver secondaryTemplateResolver() throws IOException {
ClassLoaderTemplateResolver secondaryTemplateResolver = new
ClassLoaderTemplateResolver(getCustomeClassLoader());
secondaryTemplateResolver.setPrefix("mytemplates/");
secondaryTemplateResolver.setSuffix(".html");
secondaryTemplateResolver.setTemplateMode(TemplateMode.HTML);
secondaryTemplateResolver.setCharacterEncoding("UTF-8");
secondaryTemplateResolver.setOrder(2);
secondaryTemplateResolver.setCheckExistence(true);
return secondaryTemplateResolver;
}
getCustomClassloader() 将返回加载我的 test.jar 文件的 URLclassloader 实例(当前类的类加载器作为父类加载器传递)。这个 jar 文件包含我所有的模板(html 文件)+ 静态文件(JS、CSS、属性)。下面是jar文件的结构:
test.jar
|
|- mytemplates -> myhtml.html
|- static
|- js ->my.js
|- css ->my.js
|- i18N -> message.properties
看起来 spring boot 或 thymeleaf 无法从可以找到模板的 Classloader/jar 文件中找到资源。你能帮我解决这个问题吗?我如何告诉 spring boot + thymeleaf 查看特定的类加载器以查找静态资源?
我已经尝试过设置 ClassLoaderTemplateResource 但没有成功。
@Bean
public ClassLoaderTemplateResource secondaryResouceResolver() throws IOException
{
ClassLoaderTemplateResource secondaryResoucreResolver = new ClassLoaderTemplateResource(getCustomeClassLoader(),
"static/", "UTF-8");
return secondaryResoucreResolver;
}
提前感谢您的帮助!
【问题讨论】:
标签: java spring spring-boot thymeleaf classloader