[英]Freemarker template do not load
我使用Spring
+ Freemarker
作为发送电子邮件的模板,但是每次尝试发送邮件时,都会收到消息
freemarker.template.TemplateNotFoundException: Template not found for name "template.ftl".
我的代码如下:
// Configuration - AppConfig.java
@Bean
public freemarker.template.Configuration freeMarkerConfigurationFactory() throws Exception{
FreeMarkerConfigurationFactory fmcf = new FreeMarkerConfigurationFactory();
fmcf.setTemplateLoaderPath("classpath:/META-INF/freemarker/");
fmcf.setPreferFileSystemAccess(false);
fmcf.setDefaultEncoding("UTF-8");
return fmcf.createConfiguration();
}
邮件寄件人服务
@Override
@Async
public void sendActivationMail(User user, HttpServletRequest request, String restorePasswordId) throws MailException, MessagingException, GetDataException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(user.getEmail()));
mimeMessage.setSubject(SOFTWARE_NAME + " - Activation");
mimeMessage.setHeader("content-type", "text/html");
Map map = new HashMap();
map.put("link", ServletUtility.getCompleteAdress(request)+"/auth/confirm/"+restorePasswordId);
try{
mimeMessage.setContent(FreeMarkerTemplateUtils.processTemplateIntoString(freeMakerConfiguration.getTemplate("template.ftl"), map),
"text/html; charset=utf-8");
}catch(Exception e){e.printStackTrace();}
mailSender.send(mimeMessage);
}
这是我的目录树:
src
-main
--java
--- it.navium.secutor
----AppConfig.java
--resources
--webapp
---META-INF
----freemarker
-----template.ftl
执行以下3个操作,您应该会很好:
webapp
目录重命名为WEB-INF
META-INF
目录,这意味着您的新树结构将如下所示: -WEB-INF --freemarker ---template.ftl
fmcf.setTemplateLoaderPath("classpath:/freemarker/");
如果您使用的是Spring Boot,则模板的位置应为resources/templates
。 看看参考文档部分模板引擎 :
....
Spring Boot包含对以下模板引擎的自动配置支持:
- FreeMarker
- Groovy
- 胸腺
- 速度(在1.4中弃用)
- 胡子
.....
当您使用默认配置下的这些模板引擎之一时,模板将从> src / main / resources / templates自动获取 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.