Обновление элемента веб-страницы с помощью Java Spring MVC Thymeleaf без обновления

#java #spring #spring-boot #thymeleaf #page-refresh

#java #весна #весенняя загрузка #thymeleaf #страница-обновить

Вопрос:

Я создаю веб-приложение, которое отслеживает состояние ряда сенсорных узлов и исполнительных механизмов с помощью протокола COAP. Когда я получаю новое значение (например, изменение температуры) Я хотел бы обновить соответствующие данные на веб-странице.

На веб-странице у меня есть таблица, содержащая информацию обо всех узлах, по одному узлу в строке. В идеале я хотел бы «извлечь» строку таблицы соответствующего узла и изменить значение температуры на новое.

Я не могу найти способ сделать это внутри контроллера Spring.

Это HTML-таблица Thymeleaf:

 <table style="display: inline-block" id="actuatorTable" border="1px solid black">
    <thead style="font-weight:bold;">
    <tr>
        <th>NAME</th>
        <th>IP</th>
        <th>TYPE</th>
        <th>RESOURCE</th>
        <th>VALUE</th>
        <th></th>
    </tr>
    </thead>
    <tbody>
    <tr th:each="actuator: ${actuators}">
        <td th:utext="${actuator.nodeName}"></td>
        <td th:utext="${actuator.nodeIP}"></td>
        <td th:utext="${actuator.nodeType}"></td>
        <td th:utext="${actuator.nodeResource}"></td>
        <td th:utext="${actuator.currentValue}"></td>
        <td><button th:nodeIP="${actuator.nodeIP}" onclick="changeStatus(this.getAttribute('nodeIP'), 'on')">ON</button></td>
        <td><button th:nodeIP="${actuator.nodeIP}" onclick="changeStatus(this.getAttribute('nodeIP'), 'off')">OFF</button></td>
    </tr>
    </tbody>
</table>
  

Комментарии:

1. На самом деле это невозможно. Thymeleaf просто отображает представление и передает его браузеру. Вам нужно будет либо реализовать какое-либо автоматическое обновление страницы в браузере (с использованием JavaScript). Или вы можете настроить websocket между браузером и сервером для внесения изменений и использовать JavaScript для управления DOM для отображения изменений.