nac*_*o4d 2 session jsp struts textfield
我的会话中有一个DLPUser对象,这个DLPUser基本上是一个容器,用于字符串,整数和一些有用的信息.
(这是我在java中的action类中的代码片段)
Map <String, Object> session = ActionContext.getContext().getSession();
session.put("logged-in","true");
session.put("user", user); //user is DLPUser user = new DLPUser();
Run Code Online (Sandbox Code Playgroud)
现在我想显示user.getName()的值; 在某些JSP中的textField内部我该怎么做?我正在使用Struts标签,以下不起作用.
<s:textfield label="Name" name="name" value="<% session.user.getName(); %>"/>
Run Code Online (Sandbox Code Playgroud)
要么
<s:textfield label="Name" name="name" value="#session.user.getName"/>
Run Code Online (Sandbox Code Playgroud)
这应该是简单的......但我陷入困境,无法在struts和jsp中找到关于这个东西的好参考.非常感谢任何帮助.
我自己也在学习如何做到这一点,这次讨论很有帮助.这一点,来自各种网页的材料和"Struts 2 in Action"这本书让我走到了我需要的地方.
Nate和nacho4d的答案接近标准.这是我做的:
所需进口:
import java.util.Map;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.interceptor.SessionAware;
Run Code Online (Sandbox Code Playgroud)
我的动作类("用户")声明:
public class User extends ActionSupport implements SessionAware {
Run Code Online (Sandbox Code Playgroud)
我的会话变量是User的数据成员:
Map <String, Object> session;
Run Code Online (Sandbox Code Playgroud)
然后,在我验证用户的方法中(注意UserModel只是数据成员及其getter/setter的简单类)
UserModel user;
...
session.put("User", user);
Run Code Online (Sandbox Code Playgroud)
最后,在我的jsp文件中:
<s:if test="%{#session.User.isLoggedIn()}">
Welcome back, <s:property value="%{#session.User.firstName}" />
<s:property value="%{#session.User.middleName}" />
<s:property value="%{#session.User.lastName}" />!
<a href="Logout.action">Logout</a>
</s:if>
Run Code Online (Sandbox Code Playgroud)
请注意访问会话对象方法/数据成员的语法.虽然我没有在某处详细阅读,但我猜测:
从那里,结果是用于访问对象及其方法/成员的普通点运算符.
我是一个新手,但似乎UserModel的数据成员是私有的无关紧要,JSP无论如何都可以访问它们.
哦.最后一点,为了让它"完整",退出怎么样?我的java用于注销操作:
public String logoutUser()
{
session.remove("User");
return SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36056 次 |
| 最近记录: |