Разве нельзя напрямую вызвать session.getAttribute() с помощью EL?

Значение для «электронной почты» устанавливается в рамках сеанса с использованием

session.setAttribute("email", "[email protected]").

Для отображения значения позже использовался следующий код

<c:out value='${session.getAttribute("email")}'> </c:out>

Это не дало никакого вывода на экран. Обратите внимание, что необходимые пакеты были импортированы и ошибки не возникло.

Однако, если я перепишу с помощью скриптлета: <% out.print(session.getAttribute("email")); %>, я получу желаемый результат.

Почему session.getAttribute() не работает при использовании выражения EL?


person Blessen George    schedule 10.06.2015    source источник
comment
возможный дубликат JSTL получить объект из сеанса   -  person Naman Gala    schedule 10.06.2015
comment
Почему вы пытаетесь сравнить яблоки с апельсинами? Просто используйте ${EMAIL} (и строчными буквами это неловко написанное заглавными буквами имя). И, пожалуйста, не смешивайте JSTL с EL. Они оба совершенно разные. См. также stackoverflow.com/tags/jstl/info и stackoverflow.com/tags/el/info   -  person BalusC    schedule 10.06.2015
comment
@BalusC Не могли бы вы немного подробнее рассказать о том, что вы не смешиваете JSTL и EL? Я до сих пор думал, что они дополняют друг друга.   -  person Blessen George    schedule 10.06.2015


Ответы (2)


Мой вопрос: почему session.getAttribute() не работает при использовании тега JSTL?

Правильный способ получения атрибута сеанса в jsp через EL:

<c:out value='${sessionScope.EMAIL}'/>

Вы испортили код JSTL и скриптлета, вы можете попробовать

email: <%= session.getAttribute("EMAIL") %>
person underdog    schedule 10.06.2015

В EL вы получаете доступ к переменным сеанса, используя объект sessionScope, например ${sessionScope.EMAIL}.

person DSF    schedule 10.06.2015
comment
Замечательно! Решает мою проблему. Но просто любопытно, почему код, который я написал в теге JSTL, не работает? В чем заключается проблема? Насколько я знаю, ошибок в коде не было. Просто нет выхода. - person Blessen George; 10.06.2015