Текст 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 к своей почте.