【发布时间】:2016-08-01 08:40:12
【问题描述】:
这是我下面的代码,当我执行时它显示大小为 3,但当我弹出对象时,我只得到 2 个对象。
import java.util.*;
import com.opensymphony.xwork2.util.ValueStack;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String name;
public String execute() throws Exception {
ValueStack stack = ActionContext.getContext().getValueStack();
Map<String, Object> context = new HashMap<String, Object>();
context.put("key1", new String("This is key1"));
context.put("key2", new String("This is key2"));
context.put("key3", new String("This is key3"));
stack.push(context);
System.out.println("Size of the valueStack: " + stack.size());
for (int i = 0; i < stack.size(); i++) {
System.out.println(i + ": " + stack.pop().toString());
}
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
请解释一下我是否做错了?
我想知道ValueStack 中存储的对象是什么,如何检索这些对象?
【问题讨论】:
-
您正在将 一个 对象推入值堆栈:
context:| -
是的,我只推送一个对象,值堆栈中的另一个对象是动作对象,所以这意味着只有 2 个对象,所以值堆栈的大小应该是 2,但它给了我3 作为对象的大小,这就是我关心的是我想知道为什么它显示大小为 3?
-
值栈中有多个东西。例如,动作本身在到达视图层之前被压入堆栈。
标签: java struts2 iteration valuestack actioncontext