我有一个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”。我试图设置正确的值数小时。我尝试了各种路径配置但没有成功。
非常感谢你的帮助,
答案 0 :(得分:11)
确保您拥有以下
在* -action servlet中,xml FreeMarkerConfigurationFactoryBean配置将“preferFileSystemAccess”属性设置为“false”
<property name="templateLoaderPath" value="classpath*:/"/> should be
<property name="templateLoaderPath" value="classpath:/"/>
在freemarker中,模板加载器尝试匹配字符串“classpath:”,而不是“classpath *:”
您在WEB-INF / lib文件夹下有JAR文件。
最后,您的模板文件位于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>
希望这对你有所帮助。