[英]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.