Как передать и переместить объект с контроллера на страницу 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>