Листья тимьяна не работают $ {name} отображается в html - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь вывести 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>.

1 Ответ

0 голосов
/ 03 мая 2018
<p th:text="'Dear ' + ${name} + ','" />

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

<p>Dear ${name}, </p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...