2016-06-03 2 views
0

mit JSP Expression Language kann ich eine Session-Attribut (ein Benutzername) auf einer jsp Seite im Sitzungsbereich gespeichert anzuzeigen:Wie erhalten Sie ein Attribut von einer HttpSession außerhalb des Sitzungsbereichs mit der JSP-Ausdruckssprache? wie folgt

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

Dieser druckt die ‚username‘ ich zuvor mit dem setAttribute zu der Sitzung zugewiesen Methode richtig.

Dies funktioniert jedoch nicht, wenn ich die HttpSession später einer Variablen zuweisen. Im folgenden Beispiel gibt requestScope.sessionList eine ArrayList von HttpSessions zurück.

<c:forEach items="${requestScope.sessionList }" var="se" > 
    <c:out value="${se.username }" /> 
</c:forEach> 

Der obige Code wird in einem javax.el.PropertyNotFoundException führen: Eigenschaft 'username' nicht auf Typen org.apache.catalina.session.StandardSessionFacade Ausnahme gefunden. Kann jemand den richtigen Weg erklären, um auf das Attribut 'Benutzername' im obigen Szenario zuzugreifen?

Antwort

1

Ich glaube nicht, dass es eine Lösung gibt. Vielleicht könnten Sie etwas wie das folgende verwenden.

<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %> 
<% 
    session.setAttribute("cars","vehicles"); 
    session.setAttribute("toys","playthings"); 
    session.setAttribute("trees","big plants"); 
%> 
<c:forEach items="${pageContext.session.getAttributeNames()}" var="name" > 
    ${name} are ${sessionScope[name]} <br/> 
</c:forEach> 
+0

Eigentlich gibt es eine Lösung und Ihre Antwort zeigt es. Ich wusste nicht, dass Sie Methoden für Objekte innerhalb von JSP-Expression-Tags aufrufen können. Wenn ich also meinen eigenen Code von $ {se.username} "nach $ {se.getAttribute ('Benutzername')} ändere, löst er das Problem. – CODEBLACK

Verwandte Themen