在Velocity模板引擎中,我可以使用模型变量
$request
这是HttpServletRequest的一个实例。如何在Freemarker模板引擎中获取http请求对象?根据freemarker文档,
http://freemarker.org/docs/api/freemarker/ext/servlet/HttpRequestHashModel.html#getRequest--
有一个类HttpRequestHashModel,它的方法返回一个HttpServletRequest的实例。
所以问题是,如何在spring boot中访问这个对象?我找到了一些关于使用
的信息${Request}
变量,但是我收到一个错误,它返回一个null / missing对象。
答案 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}