25 Ocak 2021 Pazartesi

SpringMVC Thymeleaf SpringTemplateEngine Sınıfı

Giriş
Şu satırı dahil ederiz
import org.thymeleaf.context.Context;
import org.thymeleaf.spring5.SpringTemplateEngine;
addTemplateResolver metodu
Örnek
Şöyle yaparız
@Configuration
public class TemplateEngineConfig implements WebMvcConfigurer {
  private static final String EMAIL_TEMPLATE_ENCODING = "UTF-8";
  
  @Bean
  @Primary
  public TemplateEngine emailTemplateEngine() {
    final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    // Resolver for HTML emails (except the editable one)
    templateEngine.addTemplateResolver(emailTemplateResolver());
    
    return templateEngine;
  }
  
  private ITemplateResolver emailTemplateResolver() {
    ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
    templateResolver.setResolvablePatterns(Collections.singleton("*"));
    templateResolver.setPrefix("/templates/");
    templateResolver.setSuffix(".html");
    templateResolver.setTemplateMode(TemplateMode.HTML);
    templateResolver.setCharacterEncoding(EMAIL_TEMPLATE_ENCODING);
    templateResolver.setCacheable(false);

    return templateResolver;
  }
}
custom configuration kullandığımı için Thymelead auto configuration kapatılır. şöyle yaparız
@SpringBootApplication(exclude = { ThymeleafAutoConfiguration.class })
public class MailApplication {
  public static void main(String[] args) {
    SpringApplication.run(MailApplication.class, args);
  }
}
process metodu - Path + Context
Örnek
/src/main/resources/templates/project-status-change.txt dosyası olsun. Dosyanın için şöyle olsun. Değişkenler [(${...})] şeklinde tanımlı
Hello [(${fullName})],

Your subscription for [(${productName})] received an update. Please go check it out on :

https://definitely-not-a-spam.com/legit-link

Cheers.
Şöyle yaparız
ProjectStatusChangeDto projectStatus = ...,

Context context = new Context();
context.setVariable("fullName", projectStatus.getAuthorFullName());
context.setVariable("productName", projectStatus.getProductName());

SpringTemplateEngine templateEngine = ...;;
String text = templateEngine.process("project-status-change.txt", context);

Hiç yorum yok:

Yorum Gönder