Конфигурация Spring Freemarker, шаблон не найден - PullRequest
5 голосов
/ 03 апреля 2011

У меня есть веб-приложение Spring / JSF, которое зависит от модуля, использующего шаблоны Freemarker. Вот что я сделал для интеграции:

Я импортировал applicationContext-freemarker-module.xml в applicationContext.xml Я добавил компонент конфигурации в applicationContext-freemarker-module.xml, как показано ниже.

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

Я поместил свои шаблоны в каталог src / main / resources модуля freemarker. Я читаю шаблоны, как показано ниже:

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

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

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

Теперь я пробовал столько значений для свойства templateLoaderPath, но всегда получал «Шаблон не найден». исключение.

JAR модуля Freemarker как показано ниже

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

Где я должен поместить файлы шаблона и что я должен установить для значения templateLoaderPath? Я не мог понять, почему "template.ftl" не может быть найден. Я пытаюсь установить правильное значение в течение многих часов. Я безуспешно пробовал различные конфигурации путей.

Большое спасибо за вашу помощь,

Ответы [ 2 ]

11 голосов
/ 01 июля 2011

Убедитесь, что у вас есть следующее

  1. В вашем * сервлете действия xml в конфигурации FreeMarkerConfigurationFactoryBean для свойства "lovelyFileSystemAccess" установлено значение "false"

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

    В freemarker загрузчик шаблонов пытается найти строку «classpath:», а не «classpath *:»

  3. у вас есть файл JAR в папке WEB-INF / lib.

  4. Наконец, ваш файл шаблона находится в корневом каталоге файла jar.

3 голосов
/ 27 июня 2014

Используйте такой боб, как это:

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

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...