Я получил приложение SpringBoot
с HTML
, Thymeleaf
и mySQL
. Есть страница с <table>
адресами доставки о клиенте, который вошел в систему с th:each
, и <td>
с <form method="delete">
. Форма работает с каждым элементом, кроме первого.
HTML + Thymeleaf:
<form th:action="@{/profile}" method="get">
<table>
<thead>
<tr>
...
</tr>
</thead>
<tr th:each="cusDetails : ${details}" th:object="${cusDetails}">
<td><span th:text="*{getPostCode()}"></span></td>
...
<td>
<form th:action="@{/confirmDelete}" th:method="delete">
<input type="hidden" th:attr="name='id'" th:value="${cusDetails.id}">
<button type="submit">DELETE</button>
</form>
</td>
</tr>
</tbody>
</table>
</form>
Контроллеры:
@GetMapping("/profile")
public String getProfilePage(Model model, HttpSession session) {
model.addAttribute("details", cusDetailsService.findAllByCus_Id(cusService.getCusSessionId(session)));
return "profile";
}
@DeleteMapping("/confirmDelete")
public String confirmDelete(@RequestParam long id) {
cusDetailsService.deleteDetailsById(id);
return "redirect:/profile";
}
Поэтому, когда я нажимаю кнопку удаления, адрес доставки рядом с ней исчезает, все работает нормально. Но когда я нажимаю на самый первый, это не так. Страница отображается без каких-либо вариантов доставки. Когда я добавляю первое, оно появляется, но после этого я не могу удалить его. Я могу удалить все остальные, кроме первого. Также при нажатии на кнопку удаления для первого элемента он добавляет дополнительный путь к html /profile
, например: /profile?_method=delete&id=1
, и больше ничего не происходит.
Очевидно, что есть возможность добавлять новые элементы в список, но это не имеет значения, поэтому я не включил. Если кто-то думает иначе, я обновлю.