开发者

Spring Freemarker Configuration, Template Not Found

开发者 https://www.devze.com 2023-02-21 23:23 出处:网络
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 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

  1. In your *-action servlet xml FreeMarkerConfigurationFactoryBean configuration has the "preferFileSystemAccess" property set to "false"

  2. <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*:"

  3. you have the JAR file under WEB-INF/lib folder.

  4. 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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号