Как получить контекст запроса в шаблоне freemaker весной - PullRequest
28 голосов
/ 08 августа 2009

Как получить путь к контексту запроса в шаблоне freemarker при использовании с spring?

Мой распознаватель вида выглядит так

    <bean id="freeMarkerViewResolver" class="learn.common.web.view.FreemarkerViewResolver">
        <property name="order" value="1" />
        <property name="viewClass"
        value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
        <property name="suffix" value=".ftl" />
        <property name="cache" value="false" />
    </bean>

распознаватель моего взгляда learn.common.web.view.FreemarkerViewResolver расширяет org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver

Ответы [ 2 ]

36 голосов
/ 08 августа 2009

В своем разрешении вы можете добавить следующее свойство

<property name="requestContextAttribute" value="rc"/>

Затем в вашем шаблоне freemarker вы можете получить патч для контекста запроса, например

${rc.getContextPath()}
7 голосов
/ 27 ноября 2014

Если вам нужно получить путь к контексту в представлении FTL, тогда Spring предоставит лучшую альтернативу - Первый импорт spring.ftl на ваш взгляд

<#import "/spring.ftl" as spring />

Затем используйте macro @ spring.url для URL, который вы хотите сделать контекстным -

<li id="history"><a href="<@spring.url '/rest/server/taskHistory'/>">History</a></li>

Это очень похоже на -

<li id="history"><a href="${rc.getContextPath()}/rest/server/taskHistory">History</a></li>

Где rc определен в viewResolver

Конфигурация на основе XML

<property name="requestContextAttribute" value="rc"/>

или конфигурация стиля Spring Boot (aplication.yml)

spring.freemarker.request-context-attribute: rc
...