我现在有一个list  我在一个table里面要迭代这个list 我现在要去每行里面迭代出3个对象 请问jstl如何实现
 <tr>
    <c:if test="${templateLsit!=null}">
     <c:forEach items="${templateLsit}" var="template" varStatus="i">
            <td  style="cursor:hand"
                   onclick="setPropertyValue( '${template.tname}','${template.tid}',event)"
                 >${template.tname}</td>
                <c:if test="${i.count % 3 == 0}">
<c:out value="</tr><tr>"/>
                </c:if>
     </c:forEach>
     </c:if>
    </tr>这么写<c:out value="</tr><tr>"/>跑到别的地方去 没办法实现换行 请教 该如何实现换行

解决方案 »

  1.   

    楼主的意思是要分3列显示数据。
    用JSTL也好,还是Java代码也好,写这玩艺都很费事。有个办法,可以非常简单实现楼主所要求的功能。
    不知楼主对CSS熟悉否?简单示例见下。
    另外,使用<c:forEach>前并不一定要用<c:if>做非空判断,<c:forEach>最不可能抛的就是NullPointerException,呵呵。
    另有一完善示例,点此下载:典型的Session购物车实现
    <%@ page language="java" pageEncoding="GB18030"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%
    //此处为模拟从数据库查询出来的数据
    int[] data = new int[10];
    for(int i = 0; i < data.length; i++)
    {
    data[ i ] = i + 1;
    }
    request.setAttribute("data", data);
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
    <style type="text/css">
    .divData
    {
    width: 150px;
    }

    .tblData
    {
    width: 50px;
    height: 50px;
    float: left;
    }
    </style>
      </head>
      
      <body>  
       <h3>分3列显示的数据</h3>
       <div class="divData">
        <c:forEach items="${ data }" var="item">
         <table border="1" class="tblData">
         <tr>
         <th>${ item }</th>
         </tr>
         </table>
        </c:forEach>
        </div>
      </body>
    </html>