JSP - 如何在重复值时打印出空白?

时间:2014-04-21 15:50:20

标签: java jsp duplicates jstl el

下面我有JSP代码打印出第一张图片。我试图实现第二张图片中的内容。

我总共有8列。只要有来自内部连接表的数据,前4列就会打印出来,其中包含数据变化的最后4列。我希望打印出从上面复制信息的列和行中的空数据或空格。每个ID最多可以有6行(最左边的列)。

<table border="1" width="100%">
<tr>
  <th>Student ID</th>
  <th>Last Name</th>
  <th>First Name</th>
  <th>Grade</th>
  <th>Events</th> 
  <th>Participation Level</th>
  <th>Ind/Team</th> 
  <th>Event Name</th>       
</tr>

<c:forEach var="row" items="${result.rows}">


  <% theStudentId = 123 ; %>
  <% System.out.println("at " + (new java.util.Date()) + ", theStudentId is " + theStudentId); %>

  <tr>
    <td><c:out value="${row.idStudents}"/></td>
    <td><c:out value="${row.LastName}"/></td>
    <td><c:out value="${row.FirstName}"/></td>
    <td><c:out value="${row.Grade}"/></td>
    <td><c:out value="${row.idEvents}"/></td>
    <td><c:out value="${row.Grade}"/></td>
    <td><c:out value="${row.Type}"/></td>
    <td><c:out value="${row.Name}"/></td>
  </tr>

</c:forEach>

这就是jsp现在打印出来的内容。

current

这就是我希望实现的目标。

target

1 个答案:

答案 0 :(得分:1)

您需要跟踪最后一个值。就在这部分之前:

<c:forEach var="row" items="${result.rows}">

您应该创建一个名为lastStudentId的变量(最初为null)。

在循环内部,检查当前学生ID是否等于lastStudentId。 (我无法告诉你如何做到这一点,因为你还没有提供这些字段的类型信息,我认为它们是字符串)。如果它与最后一个相同,则打印空td(例如包含&amp; nbsp;)。如果它不相同,那就做你通常做的事情。

在循环的底部,指定lastStudentId = row.idStudents,您就可以了。