Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Thymeleaf TemplateEngine无法在远程服务器上处理模板_Java_Spring Boot_Thymeleaf_Jakarta Mail - Fatal编程技术网

Java Thymeleaf TemplateEngine无法在远程服务器上处理模板

Java Thymeleaf TemplateEngine无法在远程服务器上处理模板,java,spring-boot,thymeleaf,jakarta-mail,Java,Spring Boot,Thymeleaf,Jakarta Mail,我正在尝试从SpringBoot应用程序使用ThymleAF发送电子邮件。使用以下方法在本地处理模板: public String build(MailType mailType, Map<String, Object> messageMap) { Context context = new Context(); context.setVariables(messageMap); return templateEngine.process("/mail/"

我正在尝试从SpringBoot应用程序使用ThymleAF发送电子邮件。使用以下方法在本地处理模板:

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

    Context context = new Context();

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

}

有人对此有什么想法吗?任何帮助都将不胜感激

硬编码纯文本/邮件/是问题所在。使用了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);

(可能不是最佳实践,还有更好的想法吗?

硬编码纯文本/邮件/是问题所在。使用了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);

(可能不是最佳实践,有更好的想法吗?

在上述情况下,您没有提供后缀。您在静态目录中没有html页面进行处理。 请显示您希望用于电子邮件的html页面,该电子邮件可能是您放在/mail/目录中的

谢谢,
Vishal

在上述情况下,您没有提供后缀。您在静态目录中没有html页面进行处理。 请显示您希望用于电子邮件的html页面,该电子邮件可能是您放在/mail/目录中的

谢谢,
Vishal

执行@matgr编写的相同操作,但不要忘记将空字符串传递给templateEngine.Process方法,如下所示。

return templateEngine.process("", context);

执行与@matgr编写的相同的操作,但不要忘记向templateEngine.proccess方法传递空字符串,如下所示。

return templateEngine.process("", context);

您好,Vishal,下面第5行是我提供后缀的地方,我打算删除这个问题及其答案,因为我相信其他地方有更好的答案,但我保留了它,因为Stack不鼓励我删除它(因为我从技术上找到了解决方案)。为了回答您的其他问题,HTML文件是不相关的(并且有点敏感),因为它是一个有效的模板,所以我没有提供它。我确实将HTML页面存储在一个静态目录中,即src/main/resources/templates,但是我创建了一个/mail子目录,以便保持整洁。抱歉造成混淆。您好,Vishal,下面第5行是我提供后缀的地方,我打算删除这个问题及其答案,因为我相信其他地方有更好的答案,但我保留了它,因为Stack不鼓励我删除它(因为我从技术上找到了解决方案)。为了回答您的其他问题,HTML文件是不相关的(并且有点敏感),因为它是一个有效的模板,所以我没有提供它。我确实将HTML页面存储在一个静态目录中,即src/main/resources/templates,但是我创建了一个/mail子目录,以便保持整洁。抱歉造成混淆。我会将此标记为答案,但如果有更好的方法,请通知我,我将接受该答案。我会将此标记为答案,但如果有更好的方法,请通知我,我将接受该答案。