2015-09-11 3 views
0

У меня есть изображение, прикрепленное со всей информацией. Чтобы добавить к нему. Данные таблицы хранятся в Java-компоненте в ArrayList (каждая запись - один компонент).JSP - сквозной стол по ключевому значению

Я хотел бы мое приложение, чтобы быть в состоянии признать, что я нахожусь в CYCLE_ID п и имеют все прогоны, отображаемые в таблице (см желаемых результатов), и для каждого 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> 

ответ

1

Сначала подготовьте Map, используя ключ CYCLE_ID, а значение Queue List. Предполагая, что класс компонента является 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> 
1

Вместо того, чтобы иметь List<Run> и итерацию на нем, вы должны иметь List<Cycle>, где каждый цикл содержит List<Run>.

Группировки оригинального плоский список прогонов по циклу легко с картой, хранящей идентификатор циклов в качестве ключей и соответствующего цикла в качестве значения:

  • вы итерацию над прогонами
  • для каждого запустите, вы получите соответствующий цикл по ID на карте. Если это не там, вы создаете его и хранить его на карте
  • добавить бег в цикле

Ath конце концов, Keyset() карты содержит все циклы, и каждый цикл содержит все его пробеги.

Затем используйте две вложенные петли foreach в JSP.

Смежные вопросы