我正在使用Thymeleaf v3.0.11.RELEASE Spring Boot v2.1.3.RELEASE,并且我的模板放在classpath:templates / folder1 / folder2 /下时遇到了问题。
我尝试了以下方法
spring.thymeleaf.prefix
设置为classpath:/templates/**/
,classpath:/templates/*
和其他类似模式试图在应用程序启动类中添加模板解析器。
@Bean
public TemplateEngine emailTemplateEngine() {
final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addTemplateResolver(htmlTemplateResolver());
return templateEngine;
}
private ITemplateResolver htmlTemplateResolver() {
final ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setResolvablePatterns(Collections.singleton("/*"));
templateResolver.setTemplateMode(TemplateMode.HTML);
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setCacheable(false);
return templateResolver;
}
这些方法不起作用,我仍然遇到错误:
"Error resolving template [template_name], template might not exist or might not be accessible by any of the configured Template Resolvers"
我想念什么吗?我只需要知道为后缀启用通配符的方法即可。
注意:如果我对classpath:templates/folder1/folder2
进行硬编码,它可以工作,但是由于将有多个文件夹,并且我不想固定所有文件夹名称,所以不能。
答案 0 :(得分:0)
在您的应用中添加以下配置类
@Configuration
public class ThymeleafConfig {
@Bean
public SpringTemplateEngine springTemplateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addTemplateResolver(htmlTemplateResolver());
return templateEngine;
}
@Bean
public SpringResourceTemplateResolver htmlTemplateResolver() {
SpringResourceTemplateResolver templateResolver =
new SpringResourceTemplateResolver();
templateResolver.setPrefix("classpath:/templates/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(
StandardTemplateModeHandlers.HTML5.getTemplateModeName());
templateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
return templateResolver;
}
}