29

freemarker使用 with 时如何获取模板中的请求上下文路径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

4

2 回答 2

36

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

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

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

${rc.getContextPath()}
于 2009-08-08T15:59:40.360 回答
8

如果您的要求是在 FTL 视图中获取上下文路径,那么 Spring 提供了一个更好的替代方案 - 首先在您的视图中导入 spring.ftl

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

然后将宏 @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 在 vi​​ewResolver 中定义

基于 XML 的配置

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

或 Spring Boot 样式配置 (aplication.yml)

spring.freemarker.request-context-attribute: rc
于 2014-11-27T02:45:17.483 回答