我在使用Spring Boot 4以及Thymeleaf web及其邮件时遇到了一些问题 .
如果我单独使用Thymeleaf web的Spring Boot 4,它可以毫无问题地工作 . 当我包含Thymeleaf邮件配置时,问题就开始了
@Bean
public ViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
return viewResolver;
}
@Bean(name ="templateEngine")
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addTemplateResolver(emailTemplateResolver());
return templateEngine;
}
private TemplateResolver emailTemplateResolver() {
TemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setPrefix("/templates/");
templateResolver.setTemplateMode("HTML5");
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setOrder(1);
return templateResolver;
}
如果我尝试构建并运行此页面,则页面无法加载 . 所以我已经使用包含Web模板更新了代码 .
@Bean
public ViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
return viewResolver;
}
@Bean(name ="templateEngine")
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addTemplateResolver(emailTemplateResolver());
templateEngine.addTemplateResolver(webTemplateResolver());
return templateEngine;
}
private TemplateResolver emailTemplateResolver() {
TemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setPrefix("/templates/");
templateResolver.setTemplateMode("HTML5");
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setOrder(1);
return templateResolver;
}
private TemplateResolver webTemplateResolver() {
TemplateResolver templateResolver = new ServletContextTemplateResolver();
templateResolver.setPrefix("/templates/");
templateResolver.setTemplateMode("HTML5");
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setOrder(2);
return templateResolver;
}
这是加载页面时返回的错误:
2016-10-14 14:56:57.137 ERROR 3875 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template "index", template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause
org.thymeleaf.exceptions.TemplateInputException: Error resolving template "index", template might not exist or might not be accessible by any of the configured Template Resolvers
需要什么配置才能使百褶网和邮件模板都能正确使用 spring 靴?
这是我对百里香的 Spring 天属性
spring.thymeleaf.check-template-location=true
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.view-names=index
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
spring.thymeleaf.cache=false
spring.thymeleaf.check-template=true
1 回答
如果你已添加
spring-boot-starter-thymeleaf
应该没有任何配置工作(spring boot
为你做了魔法)否则,如果你正在寻找配置它只是在一个类似的配置类中创建bean
TemplateResolver
应该工作 .然后,您必须在
src/main/resources/templates
中添加您的邮件模板 .因此,例如,如果您创建名为
mymail.html
的模板,则应使用SpringTemplateEngine bean进行处理 . 将其注入您需要的地方:然后处理邮件添加文件模板的名称wihtout
.html
extension并将其作为文本添加到JavaMailSender
,如下一个示例所示: