JSP - 按键值循环表

时间:2015-09-11 16:27:07

标签: java jsp loops

我附上了几乎所有信息的图片。添加到它。表数据存储在ArrayList中的java bean中(每个记录是一个bean)。

我希望我的应用程序能够识别出我在CYCLE_ID n 并且所有运行都显示在表中(请参阅所需结果),并且每个CYCLE_ID都是相同的。

我愿意在后台java类(未显示)或jsp中进行更改。

enter image description here

<div id="activeQueue">
<h2>Active Modeling Queue for <bean:write name="userBean" property="uid" />   </h2>
<c:forEach items="${activeQueueList}" var="currentQueue">
  <p>Queue {<c:out value="${currentQueue.modelQueueID}" />} - <c:out value="${currentQueue.PROJECTION_PROJECT_NME}" /></p>
    <table>
        <tr>
            <th>Type</th>
            <th>Start Time </th>
            <th>Status</th>
        </tr>
        <tr>
            <td><c:out value="${currentQueue.modelQueueDes}" /></td>
            <td><c:out value="${currentQueue.ROW_CREATE_TSP}" /></td>
            <td><c:out value="${currentQueue.STATUS_DES}" /></td>
        </tr>
    </table>
</c:forEach>

2 个答案:

答案 0 :(得分:1)

您应该拥有List<Run>,而不是List<Cycle>并对其进行迭代,而每个周期都包含List<Run>

通过循环对原始平面运行列表进行分组很容易,其中Map将循环ID作为键存储,相应的循环作为值:

  • 你迭代运行
  • 对于每次运行,您将在地图中按ID获取相应的周期。如果它还没有,你可以创建它并将其存储在地图中
  • 在循环中添加运行

最后,地图的keySet()包含所有循环,每个循环包含其所有循环。

然后在JSP中使用两个嵌套的foreach循环。

答案 1 :(得分:1)

首先使用CYCLE_ID作为关键字并使用Map作为值来准备Queue List。假设bean类为ActiveQueue,您可以执行以下操作

    Map<Integer, ActiveQueue> data = new HashMap<Integer, ActiveQueue>();
    for(ActiveQueue queue : activeQueueList) {
        if(!data.containsKey(queue.CYCLE_ID)) {
            data.put(queue.CYCLE_ID, new ArrayList<ActiveQueue>);                
        } 

        data.get(queue.CYCLE_ID).add(queue);
    }

现在你可以在jsp中使用两个嵌套循环。外部循环遍历Map data,内部循环遍历相应的Map.entry values。喜欢以下

    <div id="activeQueue">
        <h2>Active Modeling Queue for <bean:write name="userBean" property="uid" /></h2>
        <c:forEach items="${data}" var="entry">
            <p>Queue {<c:out value="${entry.key}" />} - <c:out value="${entry.value[0].PROJECTION_PROJECT_NME}" /></p>
            <table>
                <tr>
                    <th>Type</th>
                    <th>Start Time </th>
                    <th>Status</th>
                </tr>
                <c:forEach items=${entry.value} var="currentQueue">
                    <tr>
                        <td><c:out value="${currentQueue.modelQueueDes}" /></td>
                        <td><c:out value="${currentQueue.ROW_CREATE_TSP}" /></td>
                        <td><c:out value="${currentQueue.STATUS_DES}" /></td>
                    </tr>
                </c:forEach>
            </table>
         </c:forEach>