benoit.charroux@efrei.fr
public class Musique {
@NotNull
@Size(min=1)
private String titre;
// ...
}
On y voit l’attribut titre. Spring va se charger, une fois le formulaire rempli et posté côté
navigateur, puis reçu par le serveur, de créer automatiquement un objet du type Musique et
d’y stocker les données provenant du formulaire. Pour aider Spring à savoir quel attribut de
la classe doit être rempli avec quel champs du formulaire (ici c’est l’attribut titre), il faut
utiliser ce même nom de variable dans le formulaire :
<form:input path="titre" />
La dernière brique de base du modèle MVC est le Controller. Pour Spring c’est une classe
Java (MusiqueController du package com.musique.presentation) annoté
avec @Controller :
@Controller
@RequestMapping(value="/musique")
public class MusiqueController {
// TO DO : stocker les musiques en base de données
private Map<Long, Musique> musiques = new ConcurrentHashMap<Long,
Musique>();
@RequestMapping(method=RequestMethod.POST)
public String create(@Valid Musique musique, BindingResult result,
Model model) {
// …
this.musiques.put(musique.assignId(), musique);
return "redirect:/musique/" + musique.getId();
}
@RequestMapping(value="{id}", method=RequestMethod.GET)
public String getView(@PathVariable Long id, Model model) {
// …
return "voirMusique";
}
}
Où c’est la méthode create qui va recevoir les données du formulaire dans son argument
musique. Cette méthode se termine par une redirection vers la méthode getView qui va
afficher une réponse via la page JSP voirMusique.jsp (répertoire WEB-INF\views).
Si le formulaire posté contient des erreurs (champs requis manquants par exemple), le
formulaire va s’afficher à nouveau avec des indications en plus pour le remplir correctement :