Struts2 - append标签生成的结果不能多​​次迭代

时间:2014-11-10 01:15:37

标签: java jsp struts2

以下是代码段:

<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现在是一个空列表?

1 个答案:

答案 0 :(得分:1)

您的#list3不是列表,它是对附加迭代器(AppendIteratorFilter的实例)的引用。这就是<s:append>标记的工作原理。它将在迭代后删除可迭代的源。您可以在附加迭代器上调用hasNext()方法,以查看其中是否包含更多元素。和next()方法来获取下一个元素。

<s:iterator value="#list3">
    <s:property />
    <s:property value="#list3.hasNext()"/>
</s:iterator>