ValueStack对象内部有两个逻辑部分:ObjectStack和ContextMap
Struts2把Action和相关对象压入ObjectStack中;把各种各样的映射关系(一些Map类型的对象)压入ContextMap中,实际上就是对ActionContext的一个引用
<s:iterator value="#List"> 这里如果不加#,value="List" 是先从ObjectStack中去寻找,如果找到对应的属性就返回,没找到则再到ContextMap中去找; 加#,value="#List" 则是直接从值栈里的ContextMap中去找;这里用<s:iterator >循环出来的结果会被压到ObjectStack的栈顶,如果<s:iterator >里面有写var="..."的话,还会把结果放到ContextMap中,以它为key。