如何使用 JSP 表达式语言从会话范围外的 HttpSession 获取属性?
How do you get an attribute from an HttpSession outside the session scope using the JSP expression language?
使用 Jsp 表达式语言,我可以在存储在会话范围内的 jsp 页面上显示会话属性(用户名),如下所示:
<c:out value="${sessionScope.username}" />
这会打印我之前使用 setAttribute 方法正确分配给会话的 'username'。
但是,当我随后将 HttpSession 分配给变量时,这不起作用。在下面的示例中,requestScope.sessionList returns 一个 HttpSession 的 ArrayList。
<c:forEach items="${requestScope.sessionList }" var="se" >
<c:out value="${se.username }" />
</c:forEach>
以上代码将导致 javax.el.PropertyNotFoundException: 属性 'username' not found on type org.apache.catalina.session.StandardSessionFacade 异常。有人可以解释在上述情况下访问 'username' 属性的正确方法吗?
我认为没有解决方案。也许你可以使用类似下面的东西。
<%@ 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>
使用 Jsp 表达式语言,我可以在存储在会话范围内的 jsp 页面上显示会话属性(用户名),如下所示:
<c:out value="${sessionScope.username}" />
这会打印我之前使用 setAttribute 方法正确分配给会话的 'username'。
但是,当我随后将 HttpSession 分配给变量时,这不起作用。在下面的示例中,requestScope.sessionList returns 一个 HttpSession 的 ArrayList。
<c:forEach items="${requestScope.sessionList }" var="se" >
<c:out value="${se.username }" />
</c:forEach>
以上代码将导致 javax.el.PropertyNotFoundException: 属性 'username' not found on type org.apache.catalina.session.StandardSessionFacade 异常。有人可以解释在上述情况下访问 'username' 属性的正确方法吗?
我认为没有解决方案。也许你可以使用类似下面的东西。
<%@ 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>