Как получить атрибут сессии с динамическим ключом в EL? - PullRequest
19 голосов
/ 29 ноября 2011

Если я установлю сессию так:

<% 
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}

Возможно ли это?Как я могу это сделать?

Ответы [ 2 ]

27 голосов
/ 30 ноября 2011
<c:set var="name" value="taintedAttribute" />
<c:out value="${sessionScope.[name]}"/>

Вы были близки.Удалить точку.

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

См. Также:

2 голосов
/ 29 ноября 2011

Посмотрите на http://www.java2s.com/Code/Java/JSTL/JSTLSetVariablesScope.htm

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