简体   繁体   English

如何使用迭代器以编程方式绘制N个元素的块

[英]How to programmatically draw blocks of N elements using an Iterator

Let's say, I want to achieve this with Struts iterator: 假设,我想通过Struts迭代器实现这一点:

   <div class="carousel-inner">
        <div class="active item">
            <div class="row-fluid">
                <ul class="thumbnails">
                    <li class="span3"><a href="#"><img src="images/sample/clients/client1.png"></a></li>
                    <li class="span3"><a href="#"><img src="images/sample/clients/client2.png"></a></li>
                    <li class="span3"><a href="#"><img src="images/sample/clients/client3.png"></a></li>
                    <li class="span3"><a href="#"><img src="images/sample/clients/client4.png"></a></li>
                </ul>
            </div>
        </div>

        <div class="item">
            <div class="row-fluid">
                <ul class="thumbnails">
                    <li class="span3"><a href="#"><img src="images/sample/clients/client4.png"></a></li>
                    <li class="span3"><a href="#"><img src="images/sample/clients/client3.png"></a></li>
                    <li class="span3"><a href="#"><img src="images/sample/clients/client2.png"></a></li>
                    <li class="span3"><a href="#"><img src="images/sample/clients/client1.png"></a></li>
                </ul>
            </div>
        </div>

        <div class="item">
            <div class="row-fluid">
                <ul class="thumbnails">
                    <li class="span3"><a href="#"><img src="images/sample/clients/client1.png"></a></li>
                    <li class="span3"><a href="#"><img src="images/sample/clients/client2.png"></a></li>
                    <li class="span3"><a href="#"><img src="images/sample/clients/client3.png"></a></li>
                    <li class="span3"><a href="#"><img src="images/sample/clients/client4.png"></a></li>
                </ul>
            </div>
        </div>
    </div>

This is what I have tried: 这是我尝试过的:

<div class="carousel-inner">
        <div class="active item">
            <div class="row-fluid">
                <ul class="thumbnails">
                  <s:iterator value="members" begin="0" end="3">
                    <li class="span3"><a href="#"><img src="<s:property value='imageUrlPrefix' /><s:property value='imageName'>" /></a></li>
                </ul>
            </div>
        </div>

        <div class="item">
            <div class="row-fluid">
                 <ul class="thumbnails">
                  <s:iterator value="members" begin="3" end="7"> 
                    <li class="span3"><a href="#"><img src="<s:property value='imageUrlPrefix' /><s:property value='imageName'>" /></a></li>
                </ul>
            </div>
        </div>

    </div>

I want my struts iterator to create item classes with 4 list items each. 我希望我的struts迭代器创建每个包含4个列表项的项类。 Once a class is filled with 4 list items, the iterator must create another item class. 一个类填充了4个列表项后,迭代器必须创建另一个项类。 How can I achieve this? 我该如何实现?

Thank you 谢谢

You can achieve this pretty easily by using the module operator (as described in this answer ): 您可以使用module运算符( 如此答案中所述 )轻松实现此目标:

    <div class="carousel-inner">
        <div class="active item">
            <div class="row-fluid">
                <ul class="thumbnails">                    
<s:iterator value="members" status="ctr" >
                    <li class="span3">
                        <a href="#">
                            <img src="<s:property value='imageUrlPrefix' />
                            <s:property value='imageName'>" />
                        </a>
                    </li>                    
    <s:if test="%{#ctr.count % 4 == 0}" >
                </ul>
            </div>
        </div>                
        <div class="item">
            <div class="row-fluid">
                <ul class="thumbnails">
    </s:if>
</s:iterator>
                </ul>
            </div>
        </div>         
    </div>         

Note: to set the active class to the right item, use an <s:if> inside the iterator, and another one outside to check if it's the first element to be active. 注意:要将active类设置为正确的项目,请在迭代器内部使用<s:if>在外部使用另一个<s:if>来检查它是否是第一个被激活的元素。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM