Лист тимьяна не работает. $ {Name} отображается в HTML

Я пытаюсь вывести html, который был обработан листом тимьяна, поэтому значения вроде $ {name}, $ {address} что угодно - будут заполнены.

Но на самом деле происходит то, что templateEngine разделяет html, который кажется на самом деле таким же, как и был.

В основном следуя этому руководство с memorynotfound.com

Вот мой 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 довольно прост, разница только в том, что $ {name} внутри тега <p>.

У вас есть HTML-файл в папке templates? Это расположение по умолчанию для шаблонов Thymeleaf.

Bennett Dams 02.05.2018 19:06

да, это в папке с шаблоном

Kaigo 03.05.2018 10:42
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
0
2
108
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
<p th:text = "'Dear ' + ${name} + ','" />

должен быть в шаблоне html и НЕТ

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

Другие вопросы по теме