IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres Java Discussion :

Formulaire avec Thymeleaf 3.1 et Spring(boot) 5


Sujet :

Autres Java

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 065
    Points : 2 567
    Points
    2 567
    Par défaut Formulaire avec Thymeleaf 3.1 et Spring(boot) 5
    Bonjour,

    Je débute avec Thymeleaf enn version 3.1, avec Spring 5.2.
    Je souhaite dfaire des formulaire, mais je ne trouve pas beaucoup de ressources, sur Thymeleaf et la plus part sont en version 2.
    Je souhaite l'appliquer à une classe métier simple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    @Entity
    public class Classe implements Serializable {
    	protected static final long serialVersionUID = 1L;
     
    	@Id
    	@Range(min = 1, max = 9)
    	protected short numero = 0;
    	@NotNull
    	@NotBlank
    	@Length(min = 5, max = 50)
    	protected String libelle = "";
     
    ...
    getter et setter
    J'ai créer un template.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <!DOCTYPE HTML>
    <html lang="fr-fr" landxmlns:th="http://www.thymeleaf.org"
     
    <head>
    <meta charset="UTF-8" />
    <title>Ajout d'une classe</title>
    </head>
     
    <form action="#" th:action="@{/sauverClasse}" th:object="${Classe}" method="post">
    <table>
    <tr>
    <td>
        <label for="numero">Numéro//<label></label></label>
        <§/td>
        <td>
                <input type="number" th:field="*{numero}" />
                </td>
                </tr>
                >tr>
                <td>
                <label for="libelle">Libelle</label>label>
                </td>
                <td>
                <input typext" th:field="*	libelle
                <td>
                </tr>
     
                <tr>
                <td>
                <input type="submit" />
    </td>
    </tr>
    </table>
     
    </form>	
     
    </body>
    </html>
    J'ai une erreur sur les input sur l'attribut thymeleaf field
    J'ai peur d'avoir mélangé la syntaxe de la version 2 et 3



    Et je ne comprends pas bien comment faire la partie controler.
    Est-ce que je dois faire deux controller ?

    Un premier en get pour afficher la vue.

    Et un deuxième, en post du la balise form pour tenir compte de l'attribut méthod, qui va prendre les information et sauver avec et JPA, et en cas d'erreur un qui va reremplir le formulaire avec les valeurs erronées.

    J'ai regardé le tuto de developpez Spring par l'exemple.

    Mais je cherche un exemple basique simple à comprrendre.
    Si vous en connaissez un avec les versions de spring 5 et thymeleaf, par avance merci.
    Car je suis un peu perdu avec les ressources que je trouve actuellement
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 065
    Points : 2 567
    Points
    2 567
    Par défaut
    Bonjour,

    Alors j'ai poursuivi
    J'ai avancé sur tymeleaf.

    Il y a juste que dans les vues des fois c'est une * parfois **
    Sinon ça ressemble aux JSP et la JSTL

    J'ai fait mon controller ainsi, par contre c'est plus du spring mvc.
    Mais même si il marche je me demande si il n'est pas bancale.
    J'ai du mal à récupérer proprementn les messages d'erreur du formulaire et à passer des messages facultatif à la vue principale.
    Dois-je décclarer un attribut de message dans la signature du controller ?

    voici mon code, si on peut m'aider à faire plus propre, car je le trouve un pêu bancal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
     
    package fr.xcompta.spring.controller;
     
    import java.util.List;
    import java.util.Optional;
     
    import javax.validation.Valid;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.validation.BindingResult;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.servlet.ModelAndView;
     
    import fr.xcompta.core.base.Classe;
    import fr.xcompta.spring.repository.ClasseRepository;
     
    @Controller
    public class ClasseController {
    	@Autowired
    	private ClasseRepository classeRepository;
     
    	@GetMapping("/afficherClasse")
    	public ModelAndView afficherUn(@RequestParam(name = "numero", required = true) Short numero) {
    		Optional<fr.xcompta.core.base.Classe> mayBeClasse = classeRepository.findById(numero);
    		ModelAndView model = new ModelAndView();
     
    		if (mayBeClasse.isPresent()) {
    			model.setViewName("Classe/detail");
    			model.addObject("classe", mayBeClasse.get());
    		} else {
    			// Pas d'objet trouvé à afficher
    			model.setViewName("/error");
    			model.addObject("message", "Pas de classe trouvée pour le numéro " + numero);
    		}
     
    		return model;
    	}
     
    	@GetMapping("/afficherClasses")
    	public ModelAndView afficherTout() {
    		List<Classe> classes = (List<Classe>) classeRepository.findAll();
    		ModelAndView model = new ModelAndView();
    		model.setViewName("classe/list");
    		model.addObject("classes", classes);
     
    		return model;
    	}
     
    	@GetMapping("/formulaireClasse")
    	public ModelAndView afficherFormulaire(Classe classe) {
    		ModelAndView model = new ModelAndView();
    		model.setViewName("classe/form");
    		return model;
    	}
     
    	@PostMapping("/sauverClasse")
    	// public ModelAndView sauverClasse(@Valid Classe classe, BindingResult result,
    	public ModelAndView sauverClasse(@Valid Classe classe, BindingResult result) {
    		ModelAndView model = new ModelAndView();
     
    		if (result.hasErrors()) {
    			model.setViewName("/classe/form");
     
    		} else {
    			classeRepository.save(classe);
     
    			return afficherUn(classe.getNumero());
    		}
    		return model;
    	}
     
    	@PostMapping("/modifierClasse")
    	public ModelAndView modifierClasse(@RequestParam(name = "numero", required = true) short numero) {
    		Optional<Classe> mayBeClasse = classeRepository.findById(numero);
     
    		ModelAndView model = new ModelAndView();
     
    		if (mayBeClasse.isPresent()) {
    			model.setViewName("/classe/form");
    			model.addObject("classe", mayBeClasse.get());
    		} else {
    			// Erreur pas d'objet trouvé à modifier
    		}
     
    		return model;
    	}
     
    	@PostMapping("/supprimerClasse")
    	public ModelAndView supprimerClasse(@RequestParam(name = "numero", required = true) short numero) {
    		ModelAndView model = new ModelAndView();
     
    		Optional<Classe> mayBeClasse = classeRepository.findById(numero);
     
    		if (mayBeClasse.isPresent()) {
    			classeRepository.deleteById(numero);
    //					classeRepository.delete(mayBeClasse.get();
     
    //			model.addObject("message", mayBeClasse.get() + " a été supprimée");
     
    			return afficherTout();// "Clase " + numero + " supprimée");
    		} else {
    			model.setViewName("error");
    			model.addObject("message", "Pas d'objet classe trouvé pour le numéro " + numero);
    		}
     
    		return model;
    	}
    }

    Par avance merci
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MVC] Gestion des formulaires avec Spring MVC
    Par schumi2k2 dans le forum Spring Web
    Réponses: 0
    Dernier message: 23/08/2012, 15h26
  2. Validation de formulaire avec spring 2.5 et struts 2
    Par miles_ dans le forum Spring Web
    Réponses: 4
    Dernier message: 02/02/2010, 18h27
  3. [débutant] Formulaire avec Spring
    Par cyberface dans le forum Spring Web
    Réponses: 5
    Dernier message: 25/05/2009, 00h10
  4. Réponses: 1
    Dernier message: 25/05/2009, 00h01
  5. [Spring MVC] Problème formulaire avec Collection
    Par arN34 dans le forum Spring Web
    Réponses: 1
    Dernier message: 16/09/2006, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo