如何在Freemarker中获取请求对象

时间:2017-07-13 16:55:41

标签: java spring spring-mvc spring-boot freemarker

在Velocity模板引擎中,我可以使用模型变量

$request

这是HttpServletRequest的一个实例。如何在Freemarker模板引擎中获取http请求对象?根据freemarker文档,

http://freemarker.org/docs/api/freemarker/ext/servlet/HttpRequestHashModel.html#getRequest--

有一个类HttpRequestHashModel,它的方法返回一个HttpServletRequest的实例。

所以问题是,如何在spring boot中访问这个对象?我找到了一些关于使用

的信息
${Request}

变量,但是我收到一个错误,它返回一个null / missing对象。

1 个答案:

答案 0 :(得分:1)

据我所知,Spring不会直接将请求公开给模板,但默认情况下它会公开模型属性 springMacroRequestContext ,其中包含大量有关请求的信息。

springMacroRequestContext 变量允许您获取有关请求的信息。

例如:

<html lang="${springMacroRequestContext.locale.language}" class="no-js">

${springMacroRequestContext.contextPath}

根据您的要求获取路径:

${springMacroRequestContext.requestUri} 

应该足够了。

有关所有可用方法,请参阅 org.springframework.web.servlet.support.RequestContext

您可以通过在application.properties中设置以下属性来更改此属性的名称:

spring.freemarker.request-context-attribute=rc

这允许您缩短模板中的语法:

${rc.locale}