我用一个action控制jsp的显示,在action中有一个list的属性,jsp从list中取值,我想要在jsp中将这些数据在一个表格中显示出来,一行显示6个,显示多行,而且list的长度是不确定的,应该怎么办?

解决方案 »

  1.   

    struts 里 循环标签里嵌套 if标签应该可以的吧 
      

  2.   

    你查下 struts2的 迭代标签 和 if标签 的用法 然后看看有没解决办法
    自己熟悉下标签不好么?
      

  3.   

    假定你的list名称是 listUsers ,每个元素都是String 类型(实际啥类型都可以,但要确保输出正确的属性)<table>
               <s:iterator value="listUsers" status="status">
                  <s:if test="#status.index %6==0||#status.first">
        <tr>
          <s:if>
                <td><s:property value="property"/></td>
          <s:if test="#status.cout%6==0||#status.last">
       </tr>
                  </s:if>   
               </s:iterator>
           </table>
    % 是取余计算。 好像记得是,大致思路就使这样子
      

  4.   

    恩,按你这样的思路,我实现了,不过逻辑和你有点不一样,我是这样的<table>
               <s:iterator value="listUsers" status="status">
                  <s:if test="#status.index %6==0">
                  <tr>
              <s:if>
                    <td><s:property value="property"/></td>
              <s:if test="#status.index%6==0">
                  </tr>
               </s:if>              
               </s:iterator>
    </table>上面红色的两处我修改了,说一下我的分析,你看有没有道理,index本来就是从0看是,所以我们假设遮掩
    0 1 2 3 4 5 
    6 7 8 9 10 11
    当index==0的时候就应该加入<tr>同时也应当加入</tr>,1-5的时候就不用加<tr>也不用加</tr>,只会增加td
    当index==6的时候这时候起了一新行,所以加了<tr>,后面也加了</tr>,这样继续
    也就是每次新行的第一个数据开始时加入<tr>同时加入</tr>就行不过我发现,按你的那样也可以正常显示,按我那样的思路也能正常显示,而且在写</tr>的时候编辑器会报没有其实起始<tr>的错误,会有一个大红叉,而且我我发现,不加那个</tr>也能正常显示,不过是可以显示了,但是还是总觉得有点不怎么爽,你有什么高见?
      

  5.   

    <c:forEach循环,google一下能出来一大堆例子
      

  6.   

    <c:forEach>和<s:iterator>一个样,都是用来迭代了,用谁都没关系,只是显示时逻辑的问题
      

  7.   

    我上面的代码是这样的,只要有新的一行 加<tr>的同时就加了</tr>,没起新行时,就是<td>循环,这样有问题吗?不过我发现,就行没有添加</tr>的逻辑,也能显示,是不是浏览器自动为我们加?有些时候不正规,可以有起始标签,没有结束标签