获取值栈的三种方式
ValueStack valueStack = ServletActionContext.getValueStack(ServletActionContext.getRequest());
ValueStack valueStack2 = ActionContext.getContext().getValueStack();
ValueStack valueStack3 = (ValueStack) ServletActionContext.getRequest().getAttribute("struts.valueStack");
内存结构
说明:Map栈中存放
_root:(CompoundRoot)
_values:(HashMap)
在这里存放了request,response,session,application等servlet容器的内容
root是一个ArrayList 是一个对象栈 存放Action和国际化的类
Context 是一个map 存放 _root map栈
对象栈的存放 push就是放入到对象栈栈顶
ActionContext.getContext().getValueStack().push("aaaa");
public void push(Object o) {
root.push(o);
}
public void push(Object o) {
add(0, o);
}
等价于
ActionContext.getContext().getValueStack().getRoot().add("aaaa");
对象栈的提取
对象栈的弹出
可以利用valueStack.setParameter方法改变对象栈中对象的属性的值
Map栈的存放
通过该方法可以把一个字符串放入到map栈中的request域中
通过该方法可以把一个字符串放入到map栈中的application域中
通过该方法可以把一个字符串放入到map栈中