Thymeleaf TemplateEngine не может обрабатывать шаблоны на удаленном сервере - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь отправить электронную почту с помощью Thymeleaf из приложения SpringBoot.Шаблоны обрабатываются локально, используя следующий метод:

public String build(MailType mailType, Map<String, Object> messageMap) {

    Context context = new Context();

    context.setVariables(messageMap);
    return templateEngine.process("/mail/" + mailType.name(), context);

}

MailType - это Enum с именами каждого сохраненного шаблона, например, NEWUSER.Почтовые шаблоны хранятся в src / main / resources / templates / mail /

. При отправке локально отправляется электронное письмо, как предполагается, но при работе на сервере я получаю следующее сообщение об ошибке:

org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/mail/NEWUSER], template might not exist or might not be accessible by any of the configured Template Resolvers

У кого-нибудь есть идеи по этому поводу?Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Вы не указали суффикс в вышеприведенном случае. Разве у вас нет html-страниц в статическом каталоге для обработки.Пожалуйста, покажите HTML-страницу, которую вы хотите использовать для электронной почты, которую вы могли поместить в каталог / mail /. ​​

Спасибо, Вишал

0 голосов
/ 06 марта 2019

Проблема была в жестком кодировании простого текста / почты /.Использовал TemplateResolver, и это решило проблему.

context.setVariables(messageMap);

    TemplateEngine templateEngine = new TemplateEngine();

    ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
    templateResolver.setPrefix("templates/mail/");
    templateResolver.setSuffix(".html");
    templateResolver.setTemplateMode(TemplateMode.HTML);
    templateResolver.setCharacterEncoding("UTF-8");
    templateResolver.setOrder(0);

    templateEngine.setTemplateResolver(templateResolver);

(Может быть, это не лучшая практика, лучше идеи?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...