I have a Spring/JSF Web application which has a dependency to a module uses Freemarker templates. Here is what i did for integration:
I imported the applicationContext-freemarker-module.xml to applicationContext.xml I added the configuration bean to applicationContext-freemarker-module.xml like below.
<bean id="freemarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
<property name="templateLoaderPath" value="classpath*:/"/&g开发者_高级运维t;
</bean>
I put my templates to src/main/resources directory of freemarker module. I am reading the templates like below:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-freemarker-module.xml");
Configuration templateConfig = (Configuration) context.getBean("freemarkerConfiguration");
Template template = templateConfig.getTemplate("template.ftl");
Now i tried so many values for templateLoaderPath property but i always got the "Template not found." exception.
Freemarker module's JAR is like below
template.ftl
applicationContext-freemarker-module.xml
com/.../ (classes)
META-INF
Where should i put the template files and what should i set for templateLoaderPath value? I could not understand why "template.ftl" can not be found. I am trying to set the right value for many hours. I tried various path configurations without success.
Thanks a lot for your help,
Make sure you have the following
In your *-action servlet xml FreeMarkerConfigurationFactoryBean configuration has the "preferFileSystemAccess" property set to "false"
<property name="templateLoaderPath" value="classpath*:/"/> should be <property name="templateLoaderPath" value="classpath:/"/>
In freemarker the template loader tries to match a string "classpath:" , not "classpath*:"
you have the JAR file under WEB-INF/lib folder.
Finally, your template file under root of the jar file.
Use some bean like this:
<bean
class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
<property name="templateLoaderPath" value="classpath:META-INF/freemarker/" />
<property name="preferFileSystemAccess" value="false" />
</bean>
Hope this help you.
精彩评论