Renvoyer une donnée thymeleaf vers un controlleur
Lumberjack33 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
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
- Clavier qwerty vers azerty - Guide
- Votre envoi est réacheminé vers son site de distribution - Forum Consommation & Internet
- 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.