Mit ein bisschen Schwierigkeit, dies sortiert zu bekommen. Auf meiner JSP-Seite habe ich eine Tabelle, die x Anzahl der Zeilen mit 3 Spalten anzeigt. In meinem Java Bean, habe ich das erklärt, wie:Iterate über eine ArrayList <Map <String, String >> von einer Java Bean mit JSTL?
private ArrayList<Map<String, String>> issueClient = new ArrayList<>();
private ArrayList<Map<String, String>> issueR2 = new ArrayList<>();
ich meine Werte durch MVC bekommen und legen Sie sie in die Karte mit:
if (crs != null && crs.size() > 0) {
try {
while (crs.next()) {
HashMap<String, String> tmpPart = new HashMap<>();
tmpPart.put("part", crs.getString("part"));
tmpPart.put("type", crs.getString("part_type"));
tmpPart.put("id_issue", crs.getString("id_part"));
tmpPart.put("issue", crs.getString("part_name"));
repairPartAddNew.addIssueClientMap(tmpPart);
}
} catch (Exception e) {
....
}
} else {
....
}
repairPartAddNew ein Verweis auf die Java Bean ist mit dem Arraylist Karte oben erwähnt.
<c:if test="${repairPartAddNew.issueClient != null}">
<c:set var="loopValue" value="1" scope="page" />
<c:forEach var="issueClient" items="${repairPartAddNew.issueClient}" varStatus="loop">
<c:forEach var="map" items="${issueClient}">
<tr>
<td>
<form:select disabled="disabled" multiple="false" id="clientReportIssuePart${loopValue}" class="form-control input-sm" name="clientReportIssuePart" path="clientReportIssuePart" onchange="getPartSubtypes(this.value,$(this).parent().next().find('select').attr('id'));">
<form:option value="${map.value}">${map.value}</form:option>
<form:options items="${descriptionParts}" itemValue="value" itemLabel="name"/>
</form:select>
</td>
<td>
<form:select disabled="disabled" multiple="false" class="form-control input-sm" id="clientPartType${loopValue}" name="clientPartType" path="clientPartType" onchange="getRepairPartIssue(this.value,$(this).parent().next().find('select').attr('id'),$(this).parent().prev().find('select').val());">
<form:option value="${map.value}">${map.value}</form:option>
</form:select>
</td>
<td>
<form:select disabled="disabled" multiple="false" class="form-control input-sm" id="clientRepair${loopValue}" name="clientReportIssuePartId" path="clientReportIssuePartId">
</form:select>
</td>
</tr>
</c:forEach>
<c:set var="loopValue" value="${loopValue + 1}" scope="page"/>
</c:forEach>
</c:if>
ich am Ende mit verschiedenen Greueln in der Datenstruktur, einschließlich der http://prnt.sc/azjlgp
Es scheint wie Iterieren über das Array und Karte erzeugt doppelte Zeilen: die folgenden zu konstruieren, in meinem JSP, habe ich begonnen. In diesem Beispiel sollten nur 2 Tabellenzeilen vorhanden sein.
Jede Hilfe wird sehr geschätzt.
Wenn jede Karte in der Liste eine Zeile sein sollte, warum haben Sie zwei verschachtelte forEach? Warum zur Hölle verwenden Sie Maps, um Ihr Modell anstelle von Objekten mit benannten, typisierten Eigenschaften darzustellen? –
@JBNizet Sie haben recht, ich habe es nicht aus dem richtigen Blickwinkel betrachtet. – SiriusBits