Атрибут сеанса Struts 2 не отображается в jsp - PullRequest
2 голосов
/ 02 августа 2011

У меня есть класс действий для страницы входа, где я устанавливаю атрибут сеанса таким образом:

ActionContext context = ActionContext.getContext();
context.getSession().put(username, getUsername());

Я могу получить доступ к атрибуту сеанса через класс Action, таким образом:

System.out.println("Username from session: " + context.getSession().get(username).toString());

Но когда я пытаюсь получить доступ к тому же атрибуту через впоследствии отображаемый jsp, он ничего не отображает:

Welcome <s:property value="#session['username']" />

просто отображает:

Добро пожаловать

Пожалуйста, помогите относительно правильного синтаксиса для получения атрибутов сеанса.

Ответы [ 2 ]

10 голосов
/ 02 августа 2011

LoginAction

ActionContext.getContext().getSession().put("username", getUsername());


Получить имя пользователя на :

1) ДругоеДействие

ActionContext.getContext().getSession().get("username");

2) .jsp

<s:property value="#session['username']" />

или

${username}

Реализация SessionAware более предпочтительна.

См. Также:
1. Как получить доступ к сеансу
2. Как мы можем сделать недействительным сеанс

1 голос
/ 04 августа 2011

Реализация SessionAware более предпочтительна.

Это, безусловно, делает вещи проще. Это позволяет вам манипулировать сессией в вашем классе действий Struts в качестве структуры карты.

На странице jsp я обычно обращаюсь к своим объектам сеанса, как показано ниже:

<s:property value="%{#session.username}" />

или для сложных объектов в сеансе, например, пользовательский объект с именем и паролем, например:

<s:property value="%{#session.user.username}" />
<s:property value="%{#session.user.password}" />
...