我的struts 2代码中有一个迭代器,如下所示:
<s:iterator var="each_part" value="#request.rule.parts" status="eachpart">
现在,&#39;规则&#39;是一个POJO,它在Struts2动作类中设置为请求。和&#39;部分&#39;是POJO的Arraylist。
现在,在运行时,有7个POJO存储在arraylist&#39; parts&#39;中,因此迭代器运行7次。
在迭代器标记内,我创建了一个html表。所以在jsp上显示了7个表。
现在我的要求是显示20个最大表,其中7个将在运行时填充,其他表将为空。但就我而言,由于迭代器仅运行7次,因此在jsp页面上只显示7个表。
有没有办法让迭代器运行20次并从arraylist中选择7次属性并保留13次,它会显示空白表?
我试过这个
<s:iterator var="each_part" value="(20).{#request.rule.parts}" status="eachpart">
但它没有奏效。
请帮助我。
答案 0 :(得分:0)
您可以使用Iterator的begin
和end
属性:
<s:iterator begin="0" end="19" status="ctr">
<table>
<tbody>
<tr>
<td>
<s:if test="#request.rule.parts.size >= #ctr.count">
<s:set var="each_part" value="#request.rule.parts[#ctr.index]" />
<s:property value="#each_part.field1" />
<s:property value="#each_part.field2" />
</s:if>
</td>
</tr>
</tbody>
</table>
</s:iterator>
我已使用<s:set/>
模拟您的迭代器中的var
属性。
或者使用两个迭代器,或者使用占位符空对象等将你的arraylist action-side填充到20 ......
也不确定为什么在使用getter时使用请求。
答案 1 :(得分:0)
对于单个迭代,我们可以使用以下循环。
<s:iterator var="element" value="" begin="0" end="0">
</s:iterator>