【问题标题】:Resolve Thymeleaf templates in WEB-INF解析 WEB-INF 中的 Thymeleaf 模板
【发布时间】:2015-05-27 07:00:03
【问题描述】:

我想使用 thymeleaf 发送电子邮件来呈现电子邮件。这是我在 Spring 4 applicationContext.xml 中的配置:

<bean id="thymeleafMailEngine" class="org.thymeleaf.TemplateEngine">
    <property name="templateResolver" ref="thymeleafMailResolver" />
</bean>
<bean id="thymeleafMailResolver" class="org.thymeleaf.templateresolver.FileTemplateResolver">
    <property name="templateMode" value="XHTML" />
    <property name="prefix" value="src/main/webapp/WEB-INF/templates/" />
    <property name="characterEncoding" value="UTF-8" />
    <property name="cacheable" value="false"/>
</bean>
<bean id="websiteMailSender" class="com.mycompany.service.MailSenderWithAttachmentSupport">
    <property name="thymeleafEngine" ref="thymeleafMailEngine" />
    <property name="thymeleafResolver" ref="thymeleafMailResolver" />
</bean>

要发送我的电子邮件,我使用:

        MimeMessage msg=mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(msg, true, "UTF-8");
            //...
            final Context ctx = new Context();
            ctx.setVariables(model); //model is a Map<String,Object>
            helper.setText(thymeleafEngine.process(template, ctx)); //line 89
        } catch(MessagingException me) {
            log.error("Cannot send email message");
        }

它会产生这个异常:

org.thymeleaf.exceptions.TemplateInputException:错误解决 模板“my_template.html”,模板可能不存在或可能不存在 可由任何已配置的模板解析器访问 org.thymeleaf.TemplateRepository.getTemplate(TemplateRepository.java:246) 在 org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1104) 在 org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1060) 在 org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1011) 在 org.thymeleaf.TemplateEngine.process(TemplateEngine.java:924) 在 org.thymeleaf.TemplateEngine.process(TemplateEngine.java:898) 在 com.mycompany.service.MailSenderWithAttachmentSupport.send(MailSenderWithAttachmentSupport.java:89)

【问题讨论】:

  • 您使用了错误的模板解析器。使用 servlet 上下文一...
  • 但是我不会提供 HTTP 请求/响应,这不合逻辑
  • 它与您返回的内容无关,它必须执行用于查找的内容。否则将它们移动到其他地方并改用ClassPathTemplateResolver

标签: java spring spring-mvc thymeleaf


【解决方案1】:

我刚刚找到了解决方案:

<bean id="thymeleafMailResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
    <property name="templateMode" value="XHTML" />
    <property name="prefix" value="/WEB-INF/templates/" />
    <property name="characterEncoding" value="UTF-8" />
    <property name="cacheable" value="false"/>
</bean>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-10
    • 2019-02-20
    • 2016-12-21
    • 2020-03-14
    • 2021-11-05
    • 2016-01-30
    • 2021-01-28
    • 1970-01-01
    相关资源
    最近更新 更多