繁体   English   中英

Freemarker-HTTPSession属性返回null

[英]Freemarker - HTTPSession attribute returning null

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

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

我已经把Freemarker更新到了最新版本:2.3.28

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

尝试了以下几种方法来访问myVal:

$ {} Request.myVal

$ {}设为myVal

$ {} Request.Session.myVal

$ {} Session.myVal

以上所有值均为“ null”,并引发以下异常

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

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

据我在源代码中看到的, jersey-mvc-freemarker不会向FreeMarker模型添加任何额外的值。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM