Как передать и переместить объект с контроллера на страницу jsp, а затем перебрать объект, чтобы показать их в таблице?
Я работаю над проектом Spring MVC, в котором мне нужно передать объект из моего контроллера в JSP, а затем мне нужно повторить этот объект и показать его в таблице на странице jsp.
Ниже мой класс, который содержит данные -
public class DatacenterMachineMapping {
private String datacenter;
private List<MachineMetrics> metrics;
// getters and setters
}
public class MachineMetrics {
private String machineName;
private String t2_95;
private String t2_99;
private String syncs;
private String syncsBehind;
private String average;
// getters and setters
}
И ниже мой метод в моем контроллере, из которого мне нужно передать объект JSP, а затем повторить этот объект в JSP, чтобы отобразить данные в таблице -
@RequestMapping(value = "testOperation", method = RequestMethod.GET)
public Map<String, String> testData() {
final Map<String, String> model = new LinkedHashMap<String, String>();
MachineMetrics metrics1 = new MachineMetrics();
metrics1.setAvg("10");
metrics1.setT2_95("100");
metrics1.setT2_99("200");
metrics1.setMachineName("machineA");
metrics1.setSyncs("100");
metrics1.setSyncsBehind("1000");
MachineMetrics metrics2 = new MachineMetrics();
metrics2.setAvg("20");
metrics2.setT2_95("200");
metrics2.setT2_99("300");
metrics2.setMachineName("machineB");
metrics2.setSyncs("200");
metrics2.setSyncsBehind("2000");
List<MachineMetrics> metrics = new LinkedList<MachineMetrics>();
metrics.add(metrics1);
metrics.add(metrics2);
DatacenterMachineMapping mappings = new DatacenterMachineMapping();
mappings.setColo("dc1");
mappings.setMetrics(metrics);
return model;
}
И ниже моя страница JSP. И я не уверен, как использовать вышеуказанный объект mappings
таким образом на странице JSP, чтобы я мог повторить его и показать результат в таблице -
<body>
<table>
<thead>
<tr>
<th>Machine Name</th>
<th>T2_95</th>
<th>T2_99</th>
<th>Syncs</th>
<th>Syncs Behind</th>
<th>Average</th>
</tr>
</thead>
<tbody>
<!-- what to do here? -->
</tbody>
</table>
</body>
Мои данные должны выглядеть так в таблице для Datacenter 1
-
Machine Name T2_95 T2_99 Syncs Syncs Behind Average
machineA 100 200 100 1000 10
machineB 200 300 200 2000 20
Нужно ли использовать JSTL для этого? Или есть лучший подход для этого?
Ответы
Ответ 1
Импортируйте библиотеку JSTL на страницу JSP, используя
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Это свяжет пространство имен JSTL с c
. JSTL сделает тег forEach
доступным, который можно использовать для перебора вашей коллекции.
убедитесь, что ваши объекты следуют за соглашением об именах bean
<c:forEach items="${dc1.metrics}" var="m">
<tr>
<td>${m.machineName}</td>
<td>${m.t2_95}</td>
<td>${m.t2_99}</td>
<td>${m.syncs}</td>
<td>${m.syncsBehind}</td>
<td>${m.average}</td>
</tr>
</c:forEach>