【问题标题】:Thyme leaf not working ${name} shows in html百里香叶不起作用 ${name} 在 html 中显示
【发布时间】:2018-10-12 18:12:43
【问题描述】:

我正在尝试输出已被百里香叶处理过的 html,因此将填写诸如 ${name}、${address} 之类的值。

但实际发生的情况是,templateEngine 正在拆分出看起来与进入时实际上相同的 html。

主要关注来自memorynotfound.com的tutorial

这是我的 ThymeleafConfig

@Configuration
public class ThymeleafConfig {

    @Bean
    public SpringTemplateEngine springTemplateEngine() {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.addTemplateResolver(htmlTemplateResolver());
        return templateEngine;
    }

    @Bean
    public SpringResourceTemplateResolver htmlTemplateResolver(){
        SpringResourceTemplateResolver emailTemplateResolver = new SpringResourceTemplateResolver();
        emailTemplateResolver.setPrefix("classpath:/templates/");
        emailTemplateResolver.setSuffix(".html");
        emailTemplateResolver.setTemplateMode(StandardTemplateModeHandlers.HTML5.getTemplateModeName());
        emailTemplateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
        emailTemplateResolver.setCacheable(false);
        return emailTemplateResolver;
    }
}

我的方法我在哪里调用 templateEngine

@Component
public class ThymeleafEngine {

    @Autowired
    private SpringTemplateEngine templateEngine;

    Email email = new Email();

    public String process () {   
        Map model = new HashMap();
        model.put("name", "Bob");
        email.setMap(model);

        Context context = new Context();
        context.setVariables(email.getMap());

        templateEngine.initialize();

        String html = templateEngine.process("email_template", context);

        return html;
    }
}

电子邮件对象

public class Email {
    String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    Map map;

    public Map getMap() {
        return map;
    }

    public void setMap(Map map) {
        this.map = map;
    }
}

我无法在这篇文章中添加更多代码,但 html 非常基本,唯一的区别是 <p> 标记内的 ${name}。

【问题讨论】:

  • templates 文件夹中有您的 HTML 文件吗?这是 Thymeleaf 模板的默认位置。
  • 是的,它在模板文件夹中

标签: spring-boot thymeleaf


【解决方案1】:
<p th:text="'Dear ' + ${name} + ','" />

需要在 html 模板中并且

<p>Dear ${name}, </p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 2015-11-29
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    相关资源
    最近更新 更多