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