#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 для отображения изменений.