找不到Freemarker模板,spring配置

Posted

技术标签:

【中文标题】找不到Freemarker模板,spring配置【英文标题】:Freemarker template not found, spring configuration 【发布时间】:2014-05-21 07:53:15 【问题描述】:

我正在尝试使用 spring 使用 freemarker 模板,我的 spring 配置如下所示,

<bean id="freemarkerConf" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean" >
    <!-- Turn this off to always load via SpringTemplateLoader -->
    <property name="preferFileSystemAccess" value="false"></property>
    <property name="templateLoaderPath" value="classpath:/WEB-INF/freemarker/alertmail/"></property>
</bean>

但由于某种原因,我不断收到以下异常,

java.io.FileNotFoundException: Template mainMail.ftl not found.
at freemarker.template.Configuration.getTemplate(Configuration.java:489)
at freemarker.template.Configuration.getTemplate(Configuration.java:466)

我的代码如下,

mailBody = FreeMarkerTemplateUtils.processTemplateIntoString(freemarkerConf.getTemplate("mainMail.ftl","UTF-8"), model);

我的模板位于类路径下的文件夹中。

【问题讨论】:

【参考方案1】:

确保文件位于:src/freemarker/alermail 然后

    <bean id="freemarkerConf" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean" >
        <!-- Turn this off to always load via SpringTemplateLoader -->
        <property name="preferFileSystemAccess" value="false"></property>
        <property name="templateLoaderPath" value="classpath:/freemarker/alertmail/"></property>
    </bean>

【讨论】:

谢谢,但还是同样的问题 这也不起作用,所以将我的文件移动到 src/freemarker 并将类路径更改为类路径:/。使用“freemarker/alertmail/mailBody.ftl”加载我的文件并且它工作。还是谢谢! 哈哈,我做了同样的改变,它奏效了,并编辑了答案。我使用的是 FreeMarkerConfigurer,但它在 web env 中受支持。

以上是关于找不到Freemarker模板,spring配置的主要内容,如果未能解决你的问题,请参考以下文章

未找到 Freemarker 模板

Spring Boot 整合邮件服务

StrutsSpringJUnit4TestCase freemarker 结果“找不到名称的模板”

Freemarker 模板引擎和 Maven

freemarker模板加载TemplateLoader常见方式

如何使用 java 将 spring 标记库公开给 Freemaker 配置并处理 Freemarker 模板类?