假设图中最顶端的map设为Actioncontext的map,这种情况,用<s:property value=""/>或者EL表达式取值,可以用#key1.key2.key3.key4等等一直取下去,取到value4的值(这里面一个Map当然不像图上只有一个键值对,所以这里面的key2不是笼统的map2的key,而是map2中具体的很多键的名字中的一个)。
这个情况和<s:iterator>里面的遍历又不一样,如果将#key1作为遍历的对象,那么每一次遍历,就将value1(map2)里面的一个键值对拿出来,临时放到root的栈顶去,所以这个时候用s:property取值,直接用value=“key”或者value=“value”来取。这个时候面对的问题是如何在root中取值,和第一段中的在大的嵌套Map范围内取值还是略有区别,当然如果你把这里的value做成一个大的嵌套map,其实也是一样的(这里就要用value.key的名字.key的名字来取了,就失去了遍历的意义,所以最好加嵌套遍历)。
如果用了var,就是临时将map2中的键值对放到contextmap中,key名字为var,道理是一样的。