以下是代码段:
<s:set value="{1,2,3}" var="list1" />
<s:set value="{4,5,6}" var="list2" />
<s:append var="list3">
<s:param value="#list1" />
<s:param value="#list2" />
</s:append>
<s:iterator value="#list3">
<s:property />
</s:iterator>
<hr />
<s:iterator value="#list3">
<s:property />
</s:iterator>
<hr />
结果如下:
1 2 3 4 5 6
---------------------------------------------------------------------
---------------------------------------------------------------------
第二个<s:iterator>
标记根本不起作用,#list3
发生了什么,#list3
现在是一个空列表?
答案 0 :(得分:1)
您的#list3
不是列表,它是对附加迭代器(AppendIteratorFilter
的实例)的引用。这就是<s:append>
标记的工作原理。它将在迭代后删除可迭代的源。您可以在附加迭代器上调用hasNext()
方法,以查看其中是否包含更多元素。和next()
方法来获取下一个元素。
<s:iterator value="#list3">
<s:property />
<s:property value="#list3.hasNext()"/>
</s:iterator>