Spring framework макрос Freemarker, вложенный не работает

Я использую spring framework для своего веб-приложения и
У меня есть основное приложение макета.ftl в каталоге web / WEB-INF / представления / макет

<#macro layout>
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        Some content here
    <#nested>
        Some content here
    </body>
    </html></#macro>

И иметь другие страницы в каталоге web/WEB-INF / views,
Например page1.быстрее света

<@layout>This is the page one</@layout>

и страница 2 ftl.

<@layout>This is the page two</@layout>

Но это не работает. Мой диспетчер-сервлет.XML

    <?xml version="1.0" encoding="UTF-8"?>
<beans 
       
       
        
       xsi_schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <import resource="spring/spring-aop.xml" />
    <context:component-scan base-package="com.birthright.controllers"/>
    <context:annotation-config/>
    <mvc:annotation-driven/>
    <mvc:resources mapping="/resources/**" location="WEB-INF/resources/"/>

    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"
          p_cache="true"
          p_prefix=""
          p_suffix=".ftl"
          p_contentType="text/html; charset=UTF-8"/>

    <bean id="freemarkerConfig"
          class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"
          p_templateLoaderPath="/WEB-INF/views/"
          p_defaultEncoding="UTF-8">
        <property name="templateLoaderPaths">
            <list>
                <value>/WEB-INF/views/layout</value>
            </list>
        </property>
        <property name="freemarkerSettings">
            <props>
                <prop key="datetime_format">dd-MM-yyyy HH:mm:ss</prop>
                <prop key="number_format">0.######</prop>
                <prop key="url_escaping_charset">UTF-8</prop>
            </props>
        </property>
    </bean>
</beans>

1 ответ

  1. Вы пробовали импортировать файл макроса в свои представления?
    <#import "./layout/application.ftl">

    Кроме того, если у вас есть представления в каталоге WEB-INF/views/, templateLoaderPaths должны указывать на этот каталог, а не на WEB-INF/views/layout. Ваша конфигурация не указывает на правильный каталог, поэтому ваши представления не будут найдены. <value>/WEB-INF/views</value>