与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