Текст Thymeleaf и HTML-версия

Есть ли способ отправить текстовую и html версию в одном файле sampletemplate.html? Мы использовали API Java Mail Sender для создания как простого текстового контента, так и контента html. Мы попробовали следующий код: Ваше имя [[${TestName}]] для отображения текстовой версии, но он не отображает значения, так как не распознает формат. Попробовал и ниже версию

[# th:if="${PLAIN}"]
    Your name is [[${TestName}]]
[/]
[# th:if="${PLAIN} = false"]
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:th="http://www.thymeleaf.org" >
     <head></head><body>Your name is [[${TestName}]]</body</html>

Можно ли как-нибудь иметь текстовую и html версию в своем шаблоне. Я использую Spring boot, но пытаюсь удалить существующий скоростной шаблон, так как он больше не поддерживается. Любой другой шаблонизатор, который поможет мне достичь этого? ТИА.

1 ответ

Вы можете переопределить template engine настраивая его как txt решатель, как следующий:

@Configuration
@EnableWebMvc
public class ThymeleafConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware {

    private static final String UTF8 = "UTF-8";

    private ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
    }

    private TemplateEngine templateEngine(ITemplateResolver templateResolver) {
        SpringTemplateEngine engine = new SpringTemplateEngine();
        engine.setTemplateResolver(templateResolver);
        return engine;
    }

    @Bean
    public ViewResolver txtViewResolver() {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(templateEngine(txtTemplateResolver()));
        resolver.setContentType("text/plain");
        resolver.setCharacterEncoding(UTF8);
        resolver.setViewNames(array("*.html"));
        return resolver;
    }

    private ITemplateResolver txtTemplateResolver() {
        SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
        resolver.setApplicationContext(applicationContext);
        resolver.setPrefix("/templates/");
        resolver.setTemplateMode(TemplateMode.TEXT);
        return resolver;
    }
}

Затем вы будете анализировать все как текст, избегая ошибок распознавателя шаблонов HTML, поэтому вы используете логическое значение, как вы это делали, и анализируете txt или html:

[# th:if="${PLAIN} = true"]
    Your name is [# th:utext="${TestName}" /]
[/]
[# th:if="${PLAIN} = false"]
    <html lang="en">
     <head></head><body>Your name is [# th:utext="${TestName}" /]</body</html>
[/]

Затем вы просто добавляете сгенерированный текст с помощью thymeleaf к своей почте.

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