Thymeleaf TemplateEngine 无法处理远程服务器上的模板
Thymeleaf TemplateEngine unable to process templates on remote server
我正在尝试使用 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 是一个枚举,其中存储了每个模板的名称,例如 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
有没有人对此有任何想法?任何帮助将不胜感激!
对纯文本 /mail/ 进行硬编码是问题所在。使用了 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);
(可能不是最佳实践,有更好的想法吗?)
您没有在上面提供后缀case.Don静态目录中是否有html 个页面需要处理。
请显示您想要用于电子邮件的 html 页面,您可能已将其放入 /mail/ 目录。
谢谢,
维沙
执行与@matgr 相同的操作,但不要忘记将空字符串传递给 templateEngine.proccess 方法,如下所示。
return templateEngine.process("", context);
我正在尝试使用 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 是一个枚举,其中存储了每个模板的名称,例如 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
有没有人对此有任何想法?任何帮助将不胜感激!
对纯文本 /mail/ 进行硬编码是问题所在。使用了 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);
(可能不是最佳实践,有更好的想法吗?)
您没有在上面提供后缀case.Don静态目录中是否有html 个页面需要处理。 请显示您想要用于电子邮件的 html 页面,您可能已将其放入 /mail/ 目录。
谢谢, 维沙
执行与@matgr 相同的操作,但不要忘记将空字符串传递给 templateEngine.proccess 方法,如下所示。
return templateEngine.process("", context);