Freemarker - HTTPSession属性返回null

问题描述 投票:0回答:1

我们有一个基于运动衫的网络应用程序。我们使用Apache Freemarker作为前端网页。我创建了一个servlet Filter并将其添加到web.xml中。此过滤器拦截所有http请求。在该Filter的doFilter方法中,我从请求对象获取HTTPSession并设置属性值。说“myVal”。

现在应该在HTTPServletRequest中的HTTPSession上设置myVal。如何在FTL页面中访问此myVal。我试图找到一些关于如何检索会话的帖子,它总是返回null。

我已将Freemarker更新到最新版本:2.3.28

我还尝试将Freemarker文档中提到的servlet [1]添加到我的web.xml中。

尝试了以下访问myVal的方法:

$ {} Request.myVal

$ {weval}

$ {} Request.Session.myVal

$ {} Session.myVal

以上所有值均为“null”,并抛出以下异常

FreeMarker模板错误(DEBUG模式;在生产中使用RETHROW!):以下评估为null或缺失:==>请求[在模板“home.ftl”第18行第3列]

----提示:如果已知失败的表达式合法地引用有时为null或缺失的内容,则指定默认值,如myOptionalVar!myDefault,或使用<#if myOptionalVar ??> when-present <#else>时-失踪。 (这些仅涵盖表达式的最后一步;要覆盖整个表达式,请使用括号:(myOptionalVar.foo)!myDefault,(myOptionalVar.foo)?? ---- ---- FTL堆栈跟踪(“〜”表示嵌套相关): - 失败于:$ {Request.Session.user_privilages} [在模板“home.ftl”第18行第1列]

java jersey freemarker
1个回答
0
投票

据我所知,在source code中,jersey-mvc-freemarker不会为FreeMarker模型添加任何额外的值。

这意味着它只能看到你添加的内容。如果您希望模板看到Session,那么您需要将Session添加到模型中。

© www.soinside.com 2019 - 2024. All rights reserved.