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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在spring中的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

答案

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

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

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

${rc.getContextPath()}
另一答案

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

基于XML的配置

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

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

spring.freemarker.request-context-attribute: rc

以上是关于如何在spring中的freemarker模板中获取请求上下文的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Freemarker 模板中访问 Spring 应用程序属性?

如何在 Freemarker 模板中访问 Spring 应用程序属性?

如何在 Spring Boot 应用程序中使用 Freemarker 模板发送电子邮件?

如何在 Maven 中使用模板代码生成器(例如 freemarker)?

如何使用 java 将 spring 标记库公开给 Freemaker 配置并处理 Freemarker 模板类?

Spring Boot FreeMarker:如何动态使用自定义模板?