如何在spring中的freemarker模板中获取请求上下文

时间:2009-08-08 15:57:46

标签: spring spring-mvc freemarker

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 个答案:

答案 0 :(得分:37)

在视图解析器中,您可以添加以下属性

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

然后在您的freemarker模板中,您可以获得请求上下文补丁,如

${rc.getContextPath()}

答案 1 :(得分:7)

如果您的要求是在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