Spring Boot 4和Thymeleaf网络和邮件一起不起作用

时间:2016-10-14 07:49:19

标签: spring-boot thymeleaf

我在使用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;
}

@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.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

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 个答案:

答案 0 :(得分:0)

如果您已添加spring-boot-starter-thymeleaf,则无需任何配置即可正常工作(spring boot会为您带来魔力)

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

否则,如果您正在寻找配置,只需在类似的配置类中创建bean TemplateResolver即可。

@Bean
public ClassLoaderTemplateResolver emailTemplateResolver() {
    ClassLoaderTemplateResolver emailTemplateResolver = new ClassLoaderTemplateResolver();
    emailTemplateResolver.setSuffix(".html");
    emailTemplateResolver.setTemplateMode("HTML5");
    emailTemplateResolver.setCharacterEncoding("UTF-8");
    emailTemplateResolver.setOrder(1);

    return emailTemplateResolver;
}

然后,您必须在src/main/resources/templates中添加邮件模板。

因此,例如,如果您创建名为mymail.html的模板,则应使用SpringTemplateEngine bean进行处理。将其注入您需要的地方:

@Autowired
public SpringTemplateEngine templateEngine;

然后处理邮件,添加文件模板的名称与.html扩展名并添加为JavaMailSender的文本,如下一个示例所示:

 String body = templateEngine.process("mymail", ctx);
 javamail.setText(body, true);
相关问题