【发布时间】:2017-07-13 16:55:41
【问题描述】:
在 Velocity 模板引擎中,我可以只使用模型变量
$request
这是HttpServletRequest的一个实例。如何在 Freemarker 模板引擎中获取 http 请求对象?根据 freemarker 文档,
http://freemarker.org/docs/api/freemarker/ext/servlet/HttpRequestHashModel.html#getRequest--
有一个类 HttpRequestHashModel,它的方法返回一个 HttpServletRequest 的实例。
那么问题来了,如何在spring boot中访问这个对象呢?我发现了一些关于使用
${Request}
变量,但我得到一个错误,它返回一个空/缺失的对象。
【问题讨论】:
-
如果您通过
FreemarkerServlet使用 FreeMarker,则存在Request变量,而 Spring MVC 不这样做。否则 FreeMarker 本身不会定义这样的变量;在这种情况下,暴露这样的事情取决于 Spring MVC。与速度相同。您是否在 FreeMarker 中尝试过${request}(小写)? -
request变量不存在,但我检查了Request变量并将其发送到我的模型。 freemarker 以某种方式检测到它,但我不知道如何与之交互以及它是什么类型的类。 -
你想从请求中得到什么样的信息?也许还有其他方法。
-
@Jeroen 我想访问
getPathInfo()的HttpServletRequest方法。 -
我检查了
org.springframework.web.servlet.view.freemarker.FreeMarkerView的源代码,并且Request(还有Session、Application)变量公开了“属性”(正如Servlet 规范所称的那样)对应的 servlet 范围。所以你不会有pathInfo之类的。
标签: java spring spring-mvc spring-boot freemarker