一尘不染

在Struts 2中如何做

jsp

我正在尝试为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},即使其为零也可以保留其他值。

每个循环都类似: 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 -->

阅读 371

收藏
2020-06-10

共1个答案

一尘不染

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

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

请注意,IteratorStatus.count这与相同IteratorStatus.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;
}
2020-06-10