У нас есть веб-приложение на основе джерси.Мы используем Apache Freemarker для интерфейсных веб-страниц.Я создал фильтр сервлета и добавил его в наш web.xml.Этот фильтр перехватывает все запросы http.В методе doFilter этого фильтра я получаю HTTPSession от объекта запроса и устанавливаю значение атрибута.Скажите «myVal».
myVal теперь должен быть установлен на HTTPSession в HTTPServletRequest.Как я могу получить доступ к этому myVal на странице FTL.Я попытался найти несколько сообщений о том, как получить сессию, и она всегда возвращает ноль.
Я обновил Freemarker до последней версии: 2.3.28
Я также попытался добавить сервлет[1] упоминается в документации Freemarker к моему web.xml.
Попробовал следующие способы доступа к myVal:
$ {Request.myVal}
$ {myVal}
$ {Request.Session.myVal}
$ {Session.myVal}
Все вышеприведенные значения являются «нулевыми», и генерируется следующее исключение
Ошибка шаблона FreeMarker (режим DEBUG; используйте RETHROW в рабочей среде!): Следующее значение равно нулю или отсутствует: ==> Запрос [в шаблоне "home.ftl" в строке 18, столбец 3]
---- Совет: если известно, что ошибочное выражение юридически ссылается на что-то, что иногда является нулевым или отсутствует, либо укажите значение по умолчанию, например myOptionalVar! MyDefault, либо используйте <#if myOptionalVar ??> when-present <#else>когда пропущенное.(Они охватывают только последний шаг выражения; для охвата всего выражения используйте круглые скобки: (myOptionalVar.foo)! MyDefault, (myOptionalVar.foo) ?? ---- ---- Трассировка стека FTL ("~"означает «связанные с вложением»): - Ошибка: $ {Request.Session.user_privilages} [в шаблоне «home.ftl» в строке 18, столбец 1]