通过在jstl中合并两个不等大小的列表,以表格格式显示

时间:2013-08-07 11:45:42

标签: java html jstl

很抱歉,如果我的问题不明确。让我解释一下 - 我有两个列表,model.List1& model.List2 不等大小。但是,我仍然需要以这样的方式显示model.List2,列表元素出现在 Territory 列下。如何合并这两个列表?我不知何故需要在标有** **

的块内迭代List2

编辑: 如您所见,列表1有五个条目,而列表2只有3个条目。如果我在我的第一个列表中迭代我的第二个列表,对于List1的每次迭代,我将获得所有3个区域(请参阅SEC1)。这不是我想要的......

<table>
<thead>
 **<tr>**
  <th>User</th>
  <th>Title</th>
  <th>Role</th>
  <th>Territory</th>

  **</tr>**
</thead>
<tbody>
<c:forEach items="${model.List1}" var="list">
<tr>
<td>${list.name} </td>
<td>${list.title} </td>
<td>${list.role} </td>
</tr>
</c:forEach>



<c:forEach items="${model.List2}" var="terr">
  <td>${terr}</td>      
</c:forEach> 
</tbody>

</table>

当前输出:

User     Title  Role  Territory


user1    Lead   Lead


Territory1

期望输出:

User     Title  Role      Territory


user1    Lead   Lead      Territory1

user2    Lead2  Lead2     Territory2

user3    Lead3  Lead3     Territory3

User4    Lead4  Lead4

User5    Lead5  Lead5     

SEC1 - 这不是我想要的

User     Title  Role      Territory


user1    Lead   Lead      Territory1 Territory2 Territory3

user2    Lead2   Lead2    Territory1 Territory2 Territory3

user3    Lead3   Lead3    Territory1 Territory2 Territory3

1 个答案:

答案 0 :(得分:0)

你可以这样做

<table>
<c:forEach items="${ list1 }" var="item" varStatus="status1"> 
  <tr>
    <td>${ item.name }</td>

    <td>
      <c:if test="${ status1.index lt fn:length(list2) }">
        ${ list2[status1.index].name }
      </c:if> 
    </td>      
  </tr>
</c:forEach>
</table>

c:if检查,如果第二个列表足够大。

相关:forEach's varStatus variable