我有一个Login页面的动作类,我在其中设置会话属性:
ActionContext context = ActionContext.getContext();
context.getSession().put(username, getUsername());
我可以通过Action类访问session属性:
System.out.println("Username from session: " + context.getSession().get(username).toString());
但是当我尝试通过随后显示的jsp访问相同的属性时,它不会显示任何内容:
Welcome <s:property value="#session['username']" />
只显示:
欢迎
请帮助您了解有关重新审核会话属性的正确语法。
答案 0 :(得分:10)
<强>的LoginAction 强>
ActionContext.getContext().getSession().put("username", getUsername());
<小时/> 获取用户名:
1)OtherAction
ActionContext.getContext().getSession().get("username");
2).jsp
<s:property value="#session['username']" />
<强> 或 强>
${username}
更优先实施 SessionAware 。
另见:
的 1。 How do we get access to the session 强>
的 2。 How do we get invalidate the session 强>
答案 1 :(得分:1)
更优选实施SessionAware。
这肯定会让事情变得更容易。它允许您将struts动作类中的会话作为地图结构进行操作。
在jsp页面中,我通常会访问我的会话对象,如下所示:
<s:property value="%{#session.username}" />
或对于会话中的复杂对象,例如具有名称和密码的用户对象:
<s:property value="%{#session.user.username}" />
<s:property value="%{#session.user.password}" />