如何防止Thymeleaf对我的模板进行网址编码?

问题描述 投票:0回答:1

我们有以下thymeleaf配置:

    @Bean
    public TemplateEngine emailTemplateEngine() {
        final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.addTemplateResolver(htmlTemplateResolver());
        templateEngine.addTemplateResolver(stringTemplateResolver());
        return templateEngine;
    }

    private ITemplateResolver htmlTemplateResolver() {
        final ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
        templateResolver.setOrder(1);
        templateResolver.setResolvablePatterns(Collections.singleton("templates/*"));
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode(TemplateMode.HTML);
        templateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
        templateResolver.setCacheable(false);
        return templateResolver;
    }

    private ITemplateResolver stringTemplateResolver() {
        final StringTemplateResolver templateResolver = new StringTemplateResolver();
        templateResolver.setOrder(2);
        templateResolver.setTemplateMode(TemplateMode.TEXT);
        templateResolver.setCacheable(false);
        return templateResolver;
    }

那是 - 两个解析器,一个用于html,一个用于文本。

我们将html用于电子邮件正文,文本用于主题。

鉴于:

  • 像这样的主题“模板”(普通字符串):"[[${values.createdBy}]] created a widget"
  • values.createdByBrock O'Samson

我们看到了结果:Brock O'Samson

任何想法配置什么? “模板模式”似乎是一个明显的解决方案,但它已经设置为TEXT。

java thymeleaf
1个回答
1
投票

两种独立的方法:

© www.soinside.com 2019 - 2024. All rights reserved.