【问题标题】:how to send html content at place of thymeleaf template name如何在百里香模板名称的地方发送html内容
【发布时间】:2019-06-22 08:39:16
【问题描述】:

我想以文本形式在电子邮件中发送 html 内容,并希望将一些变量绑定到该 html 内容中。这个 html 内容保存在我用来发送电子邮件的数据库中。所以我想使用接受模板名称和上下文变量的SpringTemplateEngine 的处理方法。但我有 html 内容而不是模板。我想为此使用百里香模板引擎。但我不明白如何转换 html 内容,例如:

<html>
<head></head>
<title></title>
<body>
<div>
<p>Your ${value1} for ${value2}</p>
</div
</body>

使用以下方法到百里香模板:

String mailTemplate = templateEngine.process("mailTemplate", context);

请有人帮我解决这个问题。

【问题讨论】:

    标签: spring-boot thymeleaf


    【解决方案1】:

    有一个 StringTemplateResolver,我们可以使用它来将 html 内容作为字符串发送到模板名称的位置。

    例如:

    配置你的模板解析器和模板引擎

    private ITemplateResolver stringTemplateResolver() {
        final StringTemplateResolver templateResolver = new StringTemplateResolver();
        templateResolver.setTemplateMode(TemplateMode.HTML);
        return templateResolver;
    }
    
    @Bean
    public TemplateEngine emailTemplateEngine() {
        final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.addTemplateResolver(stringTemplateResolver());
        return templateEngine;
    }
    

    并在您的电子邮件服务中使用它。这解决了你的问题。

    【讨论】:

    • 您好,先生,您知道如何同时进行这两项操作吗?在调用 .process 时制作引擎。将字符串视为路径还是内容?
    • @vibetribe93 你可以使用限定符注解来区分bean
    • 感谢您的回复!已经这样做了。但是由于模板引擎的资源“昂贵”,我对它的两个实例并不满意。有没有办法只用一个实例?
    • @vibetribe93 你可以创建两个TemplateEngine bean
    • 非常感谢。我只是做了一整天的研究,然后就奏效了。
    猜你喜欢
    • 2015-11-29
    • 1970-01-01
    • 2015-06-01
    • 2019-12-19
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2013-02-03
    相关资源
    最近更新 更多