Spring: formulaire
charline159
Messages postés
216
Statut
Membre
-
charline159 Messages postés 216 Statut Membre -
charline159 Messages postés 216 Statut Membre -
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
- Spring Boot consume third part ✓ - Forum Java
- Template Angular 4 avec Spring boot - Forum Javascript
- Spring boot: "this.jdbcTemplate" is null" ✓ - Forum Java
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.