Spring:Afficher la liste des produits

Afin d'afficher la liste des produits on doit créer:

  1. 1La méthode findAll: dans l'interface ProduitRepository.java
  2. 2La méthodeListeProduits() dans le controlleur ProduitController.java
  3. 3 La vue :index.jsp permettant d'afficher la liste des produits
  4. 4Ajouter la dépendance du JTSL: Une biliothèque qui permet d'écrire des code dynamique serveur dans la page jsp comme :les if, for,foreach ,les vriables...

1.La méthode findAll(): dans l'interface ProduitRepository.java

package com.ecomerce.DAO;

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

import com.ecomerce.models.Produit;
@Repository
public interface ProduitRepository extends CrudRepository<Produit, Integer> {
/*une redéfinition de la méthode générique findAll()
afin de retourner la liste des produits car par défaut la méthode finAll()
retourne un Itérable ,donc il faut convertir le resultat vers une List
Par redéfinition la méthode va retourner List<Produit> automatiquement */
@override
List<Produit> findAll()
}

2.La méthode listeProduits() dans le controlleur ProduitController.java


//la route pour afficher la liste des produits est :produits/
@RequestMapping(value="/", method=RequestMethod.GET)
public String listepProduits(@ModelAttribute Produit produit,Model model){
//récuppérer le contenu de la table produit
List<Produit>produitsListe=produitRepository.findAll();
//envoyer la liste des produits à la vue index
model.addAttribute("produits",produitsListe);
//index est la vue index.jsp qui se trouve dans le dossier views/produits
return "produits/index";
}

La vue :index.jsp permettant d'afficher la liste des produits

<!--les tags de la biliothèque JSTL-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html><head><title>Liste produits</title></head>
<body><style>
table,thead,tbody,tr{width:100%;} thead{background:#ddd;} td{border:1px solid #000;}
a {margin-right:10px;}</style>
<span>Liste produits</span>
<!--produits :est la liste envoyé par le controlleur
List<Produit>produitsListe=produitRepository.findAll();
model.addAttribute("produits",produitsListe);
-->
<c:if test="${!empty produits}"> <!-- Vérifier si la liste est non vide-->
<table>
<thead><th>ID</th><th>Nom</th><th>Marque</th><th>Prix</th><th>Stock</th>
<th>Actions</th>
</thead>
<tbdoy>
<!--forEach :permet de parcourir la liste -->
<!--var="p" :p est un objet de type produit -->
<c:forEach items="${produits}" var="p">
<tr>
<td>${p.id}</td> <!--les attributs de la classe produit :les setters et getters
sont obligatoires-->
<td>${p.nom}</td>
<td>${p.marque}</td>
<td>${p.prix}</td>
<td>${p.qteStock}</td>
<!-- la route pour afficher les détails d'un produit :> produits/id-->
<td><a href="${pageContext.request.contextPath}/produits/${p.id}">Détails</a>
<!--la route pour modifier un produits:> produits/id/modifier-->
<a href="${pageContext.request.contextPath}/produits/${p.id}/modifier">Modifier</a>
<!-- la route pour supprimer un produit :> produits/id/supprimer-->
<a href="${pageContext.request.contextPath}/produits/${p.id}/supprimer">Supprimer</a></td>
</tr>
</c:forEach>
</tbdoy>
</table>
</c:if>
<!--message :est une variable qui sera utilisée pour afficher les message:
bien supprimer
bien modifier-->
${message }
</body>
</html>

Ajouter la dépendance du JTSL

<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

Explications:

1.Créer et afficher une variable dans une page jsp
<!--Déclaration de la variable v avec la valeur initiale 10
cette variable reste stockée dans la RAM durant toute la session-->
<c:set var="v" scope="session" value="${10}"/>
<!--Affichage de la valeur de la variable v avec out-->
<c:out value="${v}"/>

2.Condition IF
<c:set var="v" scope="session" value="${10}"/>
<c:if test="${v > 10}">
<p>hello<p>
</c:if>

3.Switch
<c:choose>
<c:when test="${v >10}">
hello
</c:when>
<c:when test="${v <=10}">
Bonjour
</c:when>
<c:otherwise>
Happy
</c:otherwise>
</c:choose>

4.ForEach :Création d'une boucle for

<c:forEach var="i" begin="1" end="10">
<c:out value="${i}"/><p>
</c:forEach>
<!--Création d'un boucle for(int i=1;i<10)-->
5.ForEach :parcourir une liste d'objet

<c:forEach items="${produits}" var="p">
<tr>
<td>${p.id}</td>
<td>${p.nom}</td>
</tr>
</c:forEach>








Cours et TPs