У меня есть такой контроллер:
@Controller
public class DeviceController {
@Inject
private DeviceService deviceService;
@ModelAttribute("devices")
public List<Device> getDevices() {
return deviceService.getAll();
}
@GetMapping({"/", "index.html"})
public String showIndex() {
return "index";
}
@DeleteMapping(value = "/devices/{id}")
public String deleteOne(@PathVariable("id") long id) {
deviceService.deleteOne(id);
return "index :: devices";
}
}
и такой шаблон Thymeleaf:
<table id="tbl_device" th:fragment="devices">
<tr> <!-- header --> </tr>
<tr th:each="e : ${devices}" th:object="${d}" th:id="'device_' + *{id}" th:fragment="'device_' + *{id}">
<!-- columns -->
</tr>
</table>
Когда я вызываю конечную точку /devices/{id}
DELETE, я ожидаю, что онавернуть таблицу без удаленного устройства.Но он на самом деле возвращает таблицу, включая удаленное устройство.Когда я отлаживаю код, я вижу, что getDevices()
вызывается раньше deleteOne(id)
.
Когда я вручную перезагружаю страницу после удаления, строка (правильно) больше не отображается.
Это почему?И (как) я могу изменить это поведение?
Спасибо