如何在EL中获取具有动态键的会话属性?

2022-09-01 23:16:01

如果我像这样设置会话:

<% 
session.setAttribute("taintedAttribute", "what ever we want");
%>

通常我们可以在EL中获得这样的会话变量

${sessionScope.taintedAttribute }

但是,如果我想这样做,该怎么办?

<% 
String name = "taintedAttribute";
//session.setAttribute(name, "what ever we want");
session.getAttribute(name);
%>

那么我们如何在EL中调用它呢?

EL可以得到这样的东西吗?${sessionScope.---dynamic name ---}

如果我这样做:

<c:set var="name" value="taintedAttribute" />
<c:out value="${sessionScope.[name]}"/>

名称将替换为与此行相同的名称taintedAttribute

${sessionScope.taintedAttribute}

这可能吗?我该怎么做?


答案 1
<c:set var="name" value="taintedAttribute" />
<c:out value="${sessionScope.[name]}"/>

你很接近。删除句点。

<c:set var="name" value="taintedAttribute" />
<c:out value="${sessionScope[name]}"/>

另请参阅:


答案 2

看看 http://www.java2s.com/Code/Java/JSTL/JSTLSetVariablesScope.htm

<c:set var="test" value="Session Level Value"
    scope="session" />
<c:out value="${sessionScope.test}" />