如何在struts2中运行s:iterator一段固定的次数

时间:2014-10-14 13:56:46

标签: jsp struts2 iterator

我的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">

但它没有奏效。

请帮助我。

2 个答案:

答案 0 :(得分:0)

您可以使用Iteratorbeginend属性:

<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>