无法将 Thymeleaf 模板处理为字符串

问题描述 投票:0回答:1
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templateresolver.StringTemplateResolver;
import org.thymeleaf.templatemode.TemplateMode;

import java.util.HashMap;
import java.util.Map;

public class EmailService {

    public static void main(String[] args) {
        // Define the template string
        String emailTemplateString = "Hello ${greetings},\n\nHere is your report: ${subject}.\n\nBest regards,\n${team}\n\n(Email Subject: ${name})";

        // Create the context and set variables
        Context context = new Context();
        Map<String, Object> variables = new HashMap<>();
        variables.put("greetings", "Dear Frodo");
        variables.put("subject", "Sub Custody Report");
        variables.put("team", "Ring of the fellowship");
        variables.put("name", "Aragorn");
        context.setVariables(variables);

        // Set up the template engine
        TemplateEngine textTemplateEngine = new TemplateEngine();
        StringTemplateResolver stringTemplateResolver = new StringTemplateResolver();
        stringTemplateResolver.setTemplateMode(TemplateMode.TEXT);
        stringTemplateResolver.setCacheable(false);
        textTemplateEngine.setTemplateResolver(stringTemplateResolver);

        // Process the template
        String processedTemplate = textTemplateEngine.process(emailTemplateString, context);

        // Print the result
        System.out.println(processedTemplate);
    }
}

得到这样的回复:

“你好${问候}, 这是您的报告:${subject}。 此致, ${团队} (电子邮件主题:${name})” 我知道模板不是 .txt 文件,但据我所知,应该可以从 String 中制作它,对于这种情况需要使用 TemplateMode.TEXT,尽管他们都没有放置值。

java thymeleaf
1个回答
0
投票

我更改了模板字符串中变量的语法并关闭了

TemplateMode.TEXT

最终代码如下,

import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templateresolver.StringTemplateResolver;
import org.thymeleaf.templatemode.TemplateMode;

import java.util.HashMap;
import java.util.Map;

public class EmailService {

    public static void main(String[] args) {
        // Define the template string
        String emailTemplateString = "Hello [[${greetings}]],\n\nHere is your report: [[${subject}]].\n\nBest regards,\n[[${team}]]\n\n(Email Subject: [[${name}]])";

        // Create the context and set variables
        Context context = new Context();
        Map<String, Object> variables = new HashMap<>();
        variables.put("greetings", "Dear Frodo");
        variables.put("subject", "Sub Custody Report");
        variables.put("team", "Ring of the fellowship");
        variables.put("name", "Aragorn");
        context.setVariables(variables);

        // Set up the template engine
        TemplateEngine textTemplateEngine = new TemplateEngine();
        StringTemplateResolver stringTemplateResolver = new StringTemplateResolver();
//        stringTemplateResolver.setTemplateMode(TemplateMode.TEXT);
        stringTemplateResolver.setCacheable(false);
        textTemplateEngine.setTemplateResolver(stringTemplateResolver);

        // Process the template
        String processedTemplate = textTemplateEngine.process(emailTemplateString, context);

        // Print the result
        System.out.println(processedTemplate);
    }
}

我看到了这个输出,

Hello Dear Frodo,

Here is your report: Sub Custody Report.

Best regards,
Ring of the fellowship

(Email Subject: Aragorn)
© www.soinside.com 2019 - 2024. All rights reserved.