Как получить доступ к атрибуту сеанса, используя динамическое имя? - PullRequest
3 голосов
/ 23 июля 2011

Это очень упрощенный пример проблемы, с которой я пытаюсь сослаться на сессионный компонент, динамически создавая имя атрибута с использованием JSTL / EL. Имя атрибута сеанса - «userBean», у которого есть свойство «name» с соответствующим getter / setter.

This works<br>
User: ${userBean.name}<br>

<c:set var="userBeanName">${userBean}.name</c:set><br>

This does not work<br>
User:  ${userBeanName}<br>

результаты:

Это работает
Пользователь: ACOSTA SALES COMPANY

Это не работает
Пользователь: 000101.name

Второй вызывает метод toString () моего класса userBean и объединяет это + ".name".

Конечно, есть очень простой ответ на это; однако, я не могу понять это с моими ограниченными знаниями.

1 Ответ

4 голосов
/ 23 июля 2011

Пример кода сбивает с толку и не относится к вопросу, указанному в заголовке и первом абзаце.Поэтому я проигнорирую пример кода и отвечу только на заголовок:

Как получить доступ к атрибуту сеанса, используя динамическое имя?

Вы можете использовать ${sessionScope}, чтобы получить отображение всех атрибутов сеанса.Вы можете использовать скобки для оценки переменной как имени атрибута ${sessionScope[attributeName]}.

Итак, это должно сделать:

<c:set var="attributeName" value="userBean" />

User name: ${sessionScope[attributeName].name}
...