如何在 Freemarker 中获取请求对象
How to get a request object in Freemarker
在 Velocity 模板引擎中,我可以只使用模型变量
$request
这是 HttpServletRequest 的一个实例。如何在 Freemarker 模板引擎中获取 http 请求对象?根据 freemarker 文档,
http://freemarker.org/docs/api/freemarker/ext/servlet/HttpRequestHashModel.html#getRequest--
有一个 class HttpRequestHashModel 及其方法 returns HttpServletRequest 的一个实例。
那么问题来了,如何在spring开机时访问这个对象?我找到了一些关于使用
的信息
${Request}
变量,但我得到一个错误,它 returns 一个 null/missing 对象。
据我所知,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}
在 Velocity 模板引擎中,我可以只使用模型变量
$request
这是 HttpServletRequest 的一个实例。如何在 Freemarker 模板引擎中获取 http 请求对象?根据 freemarker 文档,
http://freemarker.org/docs/api/freemarker/ext/servlet/HttpRequestHashModel.html#getRequest--
有一个 class HttpRequestHashModel 及其方法 returns HttpServletRequest 的一个实例。
那么问题来了,如何在spring开机时访问这个对象?我找到了一些关于使用
的信息${Request}
变量,但我得到一个错误,它 returns 一个 null/missing 对象。
据我所知,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}