Spring:Controlleur et Vue

1.Création du Controlleur

Création du controller contenant les méthodes ajouter,afficher,supprimer...

le controller : ProduitController.java

package com.ecomerce.controllers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.ecomerce.DAO.ProduitRepository;
import com.ecomerce.models.Produit;


@Controller
@RequestMapping("/produits/") //la routes principale de produitController
public class ProduitController {

/*Autowired :IOC (invertion de controle permet d'instancier et configurer un objet
autmatiquement en utilisant les informations dans les fichers de configuration
exemple:spring-servlets.xml
*/
@Autowired
//produitRepository :une instance de CrudRepository sera créer contenant les méthodes
//pemerttant de gérer les données de la table produits
private ProduitRepository produitRepository;

//la route pour afficher le formulaire d'ajout d'un produit :/produits/add
@RequestMapping("/add")
public String add(Model model){

//Model: permet envoyer un produit vide à la vue ajouter pour le remplire
model.addAttribute("produit", new Produit());
//chercher la vue Ajouter.jsp dans le dossier views/produits/
return "produits/Ajouter";
}

//récupérer les données à partir du formulaire Ajouter.jsp
@RequestMapping(value="/add", method=RequestMethod.POST)
public String save(@ModelAttribute Produit produit,Model model,
RedirectAttributes attributes){
/*
ModelAttribute :contient l'objet envoyé par la vue dans ce cas Produit produit
RedirectAttributes:permet d'envoyer des données à une vue par une redirection :redirect://....

*/
//insert into produit
produitRepository.save(produit);
//envoyer un message à la route /produits/add
attributes.addFlashAttribute("message", "Le produit bien ajouté.");
return "redirect:/produits/add";
}

}

la Vue: produits/Ajouter.jsp


<!-- tags/form :une librairies de tag de spring permettant de créer des formulaires-->
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<html>
<head><title>Ajouter un produit</title></head>
<body>
<fieldset>
<legend>Ajouter un produit</legend>
<!--modelAttribute="produit" :est le produit vide envoyé par le controlleur
model.addAttribute("produit", new Produit()); -->
<form:form method="post" modelAttribute="produit" action="${pageContext.request.contextPath}/produits/add">
<!-- {pageContext.request.contextPath}=>Retourne le chemin relative puis /add -->
<table><!-- Les attribut du model produit(id,nom,marque,prix,qtestock)=>Path -->
<tr>
<form:hidden path="id" /><!-- Parceque id est auto-increment -->
<td>Nom</td>
<td><form:input path="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"/></td>
</tr>
<tr>
<td>QteStock</td>
<td><form:input path="qteStock" type="Numer"/></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Valider"/></td>
</tr>
</table>
</form:form>
</fieldset>









Cours et TPs