Spring: formulaire
charline159
Messages postés
208
Date d'inscription
Statut
Membre
Dernière intervention
-
charline159 Messages postés 208 Date d'inscription Statut Membre Dernière intervention -
charline159 Messages postés 208 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je suis en train de mettre en place un formulaire sur la page /form mais lorsque celui-ci est soumis, j'ai l'erreur suivante:
Comment puis-je résoudre ce problème ?
Les controlleurs:
Le formulaire:
Classe Message:
Caused by: org.attoparser.ParseException: Error during execution of processor 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (template: "form" - line 14, col 35)ce qui concerne cette partie du code
th:field="*{author}"
Comment puis-je résoudre ce problème ?
Les controlleurs:
package com.example.demo5total.controller; import com.example.demo5total.model.Message; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; @Controller public class GeneralController { @GetMapping("/form") public String index(Model model){ model.addAttribute("newmsg",new Message()); return "form"; } @PostMapping("/form") public String postForm(Model model, @ModelAttribute Message message){ model.addAttribute("msg", message); return "form"; } }
Le formulaire:
<!DOCTYPE html> <html lang="en" xmlns:th="https://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h4>form</h4> <form action="#" th:action="@{/index}" th:object="${newmsg}" th:method="post"> <p>Author: <input type="text" th:field="*{author}" /></p> <p>Content: <input type="text" th:field="*{content}" /></p> <input type="submit" value="send!"/> </form> </body> </html>
Classe Message:
package com.example.demo5total.model; public class Message { private Integer id; private String author; private String content; public Message(){ } public Integer getId(){ return id; } public void setId(Integer id) { this.id = id; } public String getAuthor(){ return author; } public void setAuthor(String author) { this.author = author; } public String getContent(){ return content; } public void setContent(String content) { this.content = content; } }
A voir également:
- Org.attoparser.parseexception: error during execution of processor 'org.thymeleaf.spring6.processor.springinputgeneralfieldtagprocessor'
- Spring publisher - Télécharger - Photo & Graphisme
- Spring - Télécharger - Stratégie
- Tomcat, spring et EJB - Forum Java
- Spring Boot consume third part ✓ - Forum Java
- Template Angular 4 avec Spring boot - Forum Javascript
1 réponse
Apparemment il fallait que:
- je supprime
- j'ai aussi dû ajouter
Depuis, ça marche.
- je supprime
th:field="*{author}"et à la place, que j'ajoute name="author" (au même endroit, dans la même balise)
- j'ai aussi dû ajouter
@RequestParam (name="author") String authorau sein des paramètres de ma route qui gère le formulaire en POST, pour que le champ du formulaire puisse être récupéré. (donc à faire avec tous les champs du formulaire que l'on veut récupérer, sans oublier de traiter les paramètres à l'intérieur de la méthode)
Depuis, ça marche.