今天也学到值栈的传值和接收以下记录下
一般值栈都是对root进行操作,若想对context进行操作,则需ServletActionContext进行传值即可
共分为给对象,集合,context中传值和接收
action java类中
// 操作valuestack
// 获取值栈 此类方式,将添加的对象压入栈顶,前端页面可以直接通过属性名调用
ValueStack valueStack = ActionContext.getContext().getValueStack();
// push(Object Object) set(String key,Object obj)
// 对对象采用push,对集合采用set
User user = new User("杨六郎","你猜啊");
valueStack.push(user);
// 向集合内传值
List<User> list = new ArrayList<User>();
list.add(new User("张三", "zs"));
list.add(new User("李四", "ls"));
list.add(new User("王五", "ww"));
valueStack.set("list", list);
// 想context中传值
ServletActionContext.getRequest().setAttribute("reqName", "reqValue");
ServletActionContext.getRequest().getSession().setAttribute("sessName", "sessValue");
ServletActionContext.getServletContext().setAttribute("appName", "appValue");
jsp页面接收值
<s:debug/>
<h1>获取值栈中对象数据</h1>
<s:property value="userName"/>
<s:property value="password"/>
<br>
<h1>获取值栈中集合内数据</h1>
<s:property value="list[0].userName"/>
<s:property value="list[0].password"/><br>
<s:property value="list[1].userName"/>
<s:property value="list[1].password"/><br>
<s:property value="list[2].userName"/>
<s:property value="list[2].password"/><br>
<h1>获取context中内容</h1>
<s:property value="#request.reqName"/>
<s:property value="#session.sessName"/>
<s:property value="#application.appName"/>