Renvoyer une donnée thymeleaf vers un controlleur
Lumberjack33 Messages postés 8 Statut Membre -
j'essaye de faire une application web qui utilise:
SpringBoot
Mysql
JDBC
Design pattern: MVC, DAO
Thymeleaf
Et IntelliJ
J'ai une de mes vues qui affiche le contenu d'un de mes tables:
Mon controlleur utilise pour cela la méthode suivante:
@GetMapping("/userOnly/MyInjections")
public String MyInjections(Model model){
int id=this.getUserId();
List <Injection> myInj = injDAO.getAllInjFromIdDia(id);
model.addAttribute("myInj",myInj);
return "userOnly/MyInjections";
}
et j'utilise ensuite thymeleaf pour afficher tous cela dans une vue :
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="en">
<head>
<div th:replace="header :: myheader"></div>
<title>My Injections</title>
</head>
<body>
<div th:replace="userOnly/navbar :: nav"></div>
<div class="container d-flex flex-column min-vh-100 justify-content-center align-items-center">
<div class="row mt-5 mb-3" >
<h3>My injections</h3>
<table class="table table-striped">
<thead>
<tr>
<th>Date</th>
<th>Day</th>
<th>Wake up Test</th>
<th>Morning Dose</th>
<th>Morning Test</th>
<th>Midday Test</th>
<th>Midday Dose</th>
<th>Afternoon Test</th>
<th>Supper Test</th>
<th>Supper Dose</th>
<th>Evening Test</th>
<th>Sleep Test</th>
<th>Sleep Dose</th>
<th>Night Test</th>
<th>Further Information</th>
<th>Delete </th>
</tr>
</thead>
<tbody>
<tr th:each="Inj: ${myInj}">
<td th:text="${Inj.date}"> </td>
<td th:text="${Inj.day}"></td>
<td th:text="${Inj.wakeupTest}"></td>
<td th:text="${Inj.morningDose}"></td>
<td th:text="${Inj.morningTest}"></td>
<td th:text="${Inj.middayTest}"></td>
<td th:text="${Inj.middayDose}"></td>
<td th:text="${Inj.afternoonTest}"></td>
<td th:text="${Inj.supperTest}"></td>
<td th:text="${Inj.supperDose}"></td>
<td th:text="${Inj.eveningTest}"></td>
<td th:text="${Inj.sleepTest}"></td>
<td th:text="${Inj.sleepDose}"></td>
<td th:text="${Inj.nightTest}"></td>
<td th:text="${Inj.comment}"></td>
<td>
<form th:action="@{/delInj}" th:object="${InjForm}" method="post">
<input type="hidden" id="id_injection" name="InjForm.id_injection" value="${Inj.id_injection}">
<input class="btn btn-danger" type="submit" value="Submit">
</form>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</body>
</html>
Je voudrai créé un bouton "delete "qui renvoie le contenu de "${Inj.id_injection}" vers le controlleur pour pouvoir récuperer l'id du champ a supprimer mais je ne trouve pas comment faire
- Renvoyer une donnée thymeleaf vers un controlleur
- Vers quelle adresse web renvoie ce lien - Guide
- Windows 7 vers windows 10 - Accueil - Mise à jour
- Qwerty vers azerty - Guide
- Mise a jour android 4.4.2 vers 5 - Forum Téléphones & tablettes Android
- Envoyer vers - Guide
2 réponses
Essaye de faire une recherche avec les mots-clés "SpringBoot Thymeleaf CRUD".
Un exemple avec une entité User : https://www.baeldung.com/spring-boot-crud-thymeleaf
our envoyer l'id de l'enregistrement à supprimer à votre controlleur, vous pouvez utiliser une balise <input> cachée. Vous pouvez définir la valeur de cette balise en utilisant la syntaxe th:value="${Inj.id_injection}", comme ceci:
<form th:action="@{/delInj}" th:object="${InjForm}" method="post">
<input type="hidden" id="id_injection" name="InjForm.id_injection" th:value="${Inj.id_injection}">
<input class="btn btn-danger" type="submit" value="Submit">
</form>
Lorsque l'utilisateur cliquera sur le bouton "Supprimer", la valeur de l'input caché sera envoyée à votre controlleur via la méthode POST. Vous pouvez alors récupérer cette valeur dans votre controlleur en utilisant l'annotation @ModelAttribute:
@PostMapping("/delInj")
public String deleteInjection(@ModelAttribute("InjForm") InjectionForm form) {
int id = form.getId_injection();
// Supprimer l'enregistrement avec l'id récupéré
...
return "redirect:/userOnly/MyInjections";
}
Notez que vous devrez également définir une classe InjectionForm qui contiendra un champ id_injection pour stocker la valeur de l'input caché. Vous pouvez utiliser cette classe comme modèle pour votre formulaire en utilisant l'annotation th:object="${InjForm}".
J'ai déjà fait des recherches mais la plupart des exemples trouvés (comme celui-ci d'ailleurs) utilise JPA et des ORM (ici Hibernate) contrairement a mon projet.