2011-01-19 15 views
8

Próbuję pokazać atrybut sesji "userSession" na stronie JSP przy użyciu JSP EL, ale zwraca wartość null (przypadek 1). Żądania atrybutów są wyświetlane poprawnie w wyrażeniach EL.Problem z atrybutami sesji w JSP EL przy użyciu Spring MVC

Korzystanie java scriptlet zamiast, zachowuje się jak pokazano w przypadkach 2 i 3:

  1. <c:out value="${userSession}"/> \\ zwraca null
  2. <c:out value='<%=request.getSession().getAttribute("userSession")%>'/> \\ działa dobrze - zwraca atrybut sesji
  3. <c:out value='<%=session.getAttribute("userSession")%>'/> \\ Zgłasza wyjątek: nie można znaleźć sesji zmiennej

Wyjątek od przypadku 3 może być powiązany ed na problem z przypadkiem 1, coś takiego jak nierozpoznanie zmiennej sesji z jakiegoś powodu i wpływającego na wyrażenie EL.

Używam Spring MVC 2.5 i JSTL 1.1.2.

Mogę opublikować wszelkie inne informacje potrzebne do wyjaśnienia problemu.

Odpowiedz

9

Naprawiono. Problem dotyczył dyrektywy <%@ page session="false" %> znalezionej w pliku include.jsp używanym przez moją stronę, którą usunąłem z tego globalnego miejsca.

Zapobiega dostępowi do strony jsp do zmiennych zakresu sesji. Tak więc tylko <%=request.getSession().getAttribute("foo")%> działa w tym przypadku ...

8

Co robi:

<c:out value="${sessionScope.userSession}"/> 

lub

<c:out value="${sessionScope['userSession']}"/> 

dać?

+0

To samo z '': null –

+0

Wypróbuj zmienną sessionScope, jak wskazano powyżej. –

+0

Ponownie podaje wartość zerową ... –

4

<c:out value="${sessionScope}"/> lub tylko ${sessionScope} wyświetla listę wszystkich atrybutów w zakresie zastosowania portletu.

, więc możesz spróbować uzyskać swój atrybut z tym wyrażeniem!

Powiązane problemy