Spring Freemarker配置,找不到模板

时间:2011-04-03 17:14:11

标签: spring templates configuration freemarker

我有一个Spring / JSF Web应用程序,它依赖于模块使用Freemarker模板。以下是我为整合做的事情:

我将applicationContext-freemarker-module.xml导入applicationContext.xml 我将配置bean添加到applicationContext-freemarker-module.xml,如下所示。

 <bean id="freemarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
   <property name="templateLoaderPath" value="classpath*:/"/>
 </bean>

我把模板放到freemarker模块的src / main / resources目录下。 我正在阅读以下模板:

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-freemarker-module.xml");

Configuration templateConfig = (Configuration) context.getBean("freemarkerConfiguration");

Template template = templateConfig.getTemplate("template.ftl");

现在我为templateLoaderPath属性尝试了很多值,但我总是得到“找不到模板”。异常。

Freemarker模块的JAR如下所示

template.ftl
applicationContext-freemarker-module.xml
com/.../ (classes)
META-INF

我应该在哪里放置模板文件以及我应该为templateLoaderPath值设置什么? 我无法理解为什么找不到“template.ftl”。我试图设置正确的值数小时。我尝试了各种路径配置但没有成功。

非常感谢你的帮助,

2 个答案:

答案 0 :(得分:11)

确保您拥有以下

  1. 在* -action servlet中,xml FreeMarkerConfigurationFactoryBean配置将“preferFileSystemAccess”属性设置为“false”

  2. <property name="templateLoaderPath" value="classpath*:/"/> should be <property name="templateLoaderPath" value="classpath:/"/>

    在freemarker中,模板加载器尝试匹配字符串“classpath:”,而不是“classpath *:”

  3. 您在WEB-INF / lib文件夹下有JAR文件。

  4. 最后,您的模板文件位于jar文件的根目录下。

答案 1 :(得分:3)

使用这样的bean:

<bean
    class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
    <property name="templateLoaderPath" value="classpath:META-INF/freemarker/" />
    <property name="preferFileSystemAccess" value="false" />
</bean>

希望这对你有所帮助。