如何在Struts 2中为每个人做

时间:2013-07-22 12:15:28

标签: java html jsp struts2

我正在尝试在HTML中为网页构建一个滑块。 它从struts操作中获取ArrayList(名为testList)的值。而且我要 在此模式中一次显示列表中的6个值。例如:

如果数组大小为26,{0,1,2,3,4,5}则为{6,7,8,9,10,11},然后为{11,12,13,14,15} ..等等到{24,25},其余的值即使为null也可以。

每个循环都有类似的东西: for(i=0;i<size;i+6){}

但是目前我从这个模式的列表中得到了值:

{0,1,2,3,4,5}然后{1,2,3,4,5,6}然后{2,3,4,5,6,7} ..

这是因为索引(#status.index)以下列模式{0,1,2,3 ...}进行迭代 我希望索引每次增加6而不是0到1到2等。

我添加了step =“6”,但这不起作用。

以下是我的代码示例:

 <ul class="slider">
        <s:iterator step="6" status="status" value="testList" >
        <li> <!-- FIRST SLOT OF DATA --> 
            <div class="rightSubContainer">
                    <s:iterator value="testList[#status.index]" >
                        <table >
                            <tr>
                                <th>
                                    <p align="center"><b ><font color="#151B54"><s:property value="name" /></font></b></p>
                                </th>
                            </tr>
                        </table>
                        <!-- ...values  -->
                    </s:iterator>       
            </div>
            <div class="rightSubContainer">
                    <s:iterator value="testList[#status.index+1] " >
                        <table >
                            <tr>
                                <th>
                                    <p align="center"><b ><font color="#151B54"><s:property value="name" /></font></b></p>
                                </th>
                            </tr>
                        </table>
                        <!-- ...values  -->
                    </s:iterator>       
            </div>
            <div class="rightSubContainer">
                    <s:iterator value="testList[#status.index+2]" >
                        <table >
                            <tr>
                                <th>
                                    <p align="center"><b ><font color="#151B54"><s:property value="name" /></font></b></p>
                                </th>
                            </tr>
                        </table>
                        <!-- ...values  -->
                    </s:iterator>   
            </div>
            <!-- ... and so on.. upto 6 values -->

1 个答案:

答案 0 :(得分:0)

为什么每个值都有一个表?为什么1337迭代器而不是单个迭代器?为什么<b><font>等而不是使用CSS?

顺便说一下,您只需要使用%(模块运算符)来检查当前位置是否为6的倍数;如果是,则需要拆分<li>;

请注意,IteratorStatus.countIteratorStatus.index + 1相同,因为它是1-based;

丑陋的方式:

<ul class="slider">
    <li>
        <s:iterator status="status" value="testList" >          
                <table >
                    <tr>
                        <th>
                            <p align="center"><b ><font color="#151B54">
                                <s:property value="name" />
                            </font></b></p>
                        </th>
                    </tr>
                </table>
            <s:if test="%{#status.count % 6 == 0}" >
                </li>
                <li>
            </s:if>
        </s:iterator>
    </li>
</ul>

更好的方式:

<ul class="slider">
    <li>
        <s:iterator status="status" value="testList" >          
                <p>
                    <s:property value="name" />
                </p>
            <s:if test="%{#status.count % 6 == 0}" >
                </li>
                <li>
            </s:if>
        </s:iterator>
    </li>
</ul>

和CSS(或<style></style>元素中的<head>块内)

ul.slider > li > p {
    text-align: center;
    color: #151B54;
    font-weight: bold;
    background-color: #ddd;
}