Spring MVC:Modifier un produit

Afin de modifier un produit dans la base de données on doit:

  1. 1Afficher Les données Actuelles: Pour cela on a besoin de la methode modifier()Mappée avec GET dans le Controller ProduitController.java
  2. 2Formulaire de modification:Création de la vue produits/modifier.jsp
  3. 3Récuppérer les données modifiées et valider la modification: Création de la méthode modifier() Mappée avec GET dans le Controller ProduitController.java

1.Afficher Les données Actuelles:modifier() dans ProduitController.java


//recuppérer les données actuelles d'un produit dont id est passé en paramètres
@RequestMapping("/{id}/modifier")
public String modifier(@PathVariable int id, Model model)
{
//récuppérer le produit de la base de données
//select * from produit where id=id
Produit p=produitRepository.findById(id).get();
//envoyer le produit p à la vue modifier.jsp
model.addAttribute("produit",p);
//afficher la vue modifier.jsp
return "produits/modifier";

}

2.Création de la vue produits/modifier.jsp

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<html><head>Modifier un produit</head>
<body><fieldset><legend>Modifier le produit</legend>
<!--modelAttribute="produit" :l'objet produit sera rempli et envoyé -->
<form:form method="post" modelAttribute="produit"
action="${pageContext.request.contextPath}/produits/modifier">
<!--${pageContext.request.contextPath}/produits/modifier:la route de la validation
des modification AVEC la méthode POST -->
<table>
<tr>
<!--value="${produit.id}":remplir les input avec les données envoyé par le controlleur
dans l'objet produit
Produit p=produitRepository.findById(id).get();
model.addAttribute("produit",p);
-->
<form:hidden path="id" value="${produit.id}" />
<td>Nom</td>
<td><form:input path="nom" value="${produit.nom}" type="text"/></td>
</tr>
<tr>
<td>Marque</td>
<td>
<form:select path="marque">
<option value="hp">HP</option>
<option value="Test">Test</option>
</form:select>
</td>
</tr>
<tr>
<td>Prix</td>
<td><form:input path="prix" type="number" value="${produit.prix}"/></td>
</tr>
<tr>
<td>QteStock</td>
<td><form:input path="qteStock" type="numer" value="${produit.qteStock}"/></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Valider" /></td>
</tr>
</table>
</form:form>
</fieldset>

3.Valider la modification avec la méthode modifier() Mappée avec POST dans le Controller ProduitController.java

//validation des modification:la route /produits/modifier avec POST
@RequestMapping(value="/modifier", method=RequestMethod.POST)
//@ModelAttribute Produit produit:récuppérer l'objet envoyé par la vue :modelAttribute="produit"
public String modifier(@ModelAttribute Produit produit,Model model,
RedirectAttributes attributes){
/*modifier le produit :save() permet de modifier le produit s'il existe pas un produit
qui a le meme id que produit sinon save() va ajouter un nouveau produit dans la table
produits */
produitRepository.save(produit);
//Envoyer un message de confirmation à la vue index
attributes.addFlashAttribute("message", "Le produit bien modifier.");
return "redirect:/produits/";
}








Cours et TPs