Servlet, JSP et biblio JSTL Core. Comment renvoyer id Article et quantité à la servlet?
Bonjour à tous,
Je suis en train de réaliser un travail pour l'école. Il s'agit d'un site web de vente en ligne. Je travaille à l'ajout d'articles au panier. J'utilise des Servlet et la biblitothèque JSTL Core (fichiers JSP).
Sur mon site, une page web liste les articles en vente. Pour chacun d'eux, à côté de leur nom, il y a un "textbox" pour encoder la quantité souhaitée et une image "Ajouter au panier" qui ajouter l'article au panier quand on clique dessus.
Comment obtenir dans ma servlet "AjouterPanier" ces deux paramètres: la valeur présente dans le textbox associé à l'id de l'article? Si j'utilise <form Action=post>, je parviens bien à récupérer ce qu'il y a dans mon textbox, mais impossible de déterminer quelle image (et donc quel Id D'article) a été cliquée (à moins que vous ayez une idée).
Si j'utilise un lien associé à l'image, je peux alors y ajouter comme paramètre l'identifiant de l'id d'Article, mais je ne parviens pas à y associer ce qu'il y a dans le textbox.
J'ai retourné la situation dans tous les sens mais je ne parviens à rien (j'ai aussi tenté du javascript mais je tourne toujours en rond).
Quelle serait, selon vous, la solution à mon problème?
Bonne journée,
--
Jean-François
Voici le code de la page JSP:
Code:
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
| <%@ page pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Sélection de nos processeurs</title>
<link type="text/css" rel="stylesheet" href="<c:url value="style.css"/>" />
<script type="text/javascript" src="jquery-1.9.1.js"></script>
<script type="text/javascript" src="webApplication.js"></script>
</head>
<body>
<div id="corps">
<c:choose>
<%-- Si aucun client n'existe en session, affichage d'un message par défaut. --%>
<c:when test="${ empty sessionScope.processeurs }">
<p class="erreur">Aucun processeur.</p>
</c:when>
<%-- Sinon, affichage du tableau. --%>
<c:otherwise>
<table>
<tr>
<th>Constructeur</th>
<th>Nom</th>
<th>Fréquence</th>
<th>Nombre de coeurs</th>
<th>Prix</th>
<th>Prix promo</th>
<th class="action">Action</th>
</tr>
<%-- Parcours de la Map des clients en session, et utilisation de l'objet varStatus. --%>
<c:forEach items="${ sessionScope.processeurs }" var="mapProcesseurs" varStatus="boucle">
<%-- Simple test de parité sur l'index de parcours, pour alterner la couleur de fond de chaque ligne du tableau. --%>
<tr class="${boucle.index % 2 == 0 ? 'pair' : 'impair'}">
<%-- Affichage des propriétés du bean Client, qui est stocké en tant que valeur de l'entrée courante de la map --%>
<td><c:out value="${ mapProcesseurs.value.getConstructeur() }"/></td>
<td><c:out value="${ mapProcesseurs.value.getNom() }"/></td>
<td><c:out value="${ mapProcesseurs.value.getFréquence() }"/></td>
<td><c:out value="${ mapProcesseurs.value.getNombreCoeurs() }"/></td>
<td><c:out value="${ mapProcesseurs.value.getPrix() }"/></td>
<td><c:out value="${ mapProcesseurs.value.getPromo() }"/></td>
<td>
<input type="text" id="<c:out value="textBoxQuantité"/>" name="<c:out value="textBoxQuantité"/>">
</td>
<%-- Lien vers la servlet d'ajout au panier, avec passage de l'id de l'article choisi- c'est-à-dire la clé de la Map - en paramètre grâce à la balise <c:param/>. --%>
<td class="action">
<a href="<c:url value="/AjouterPanier"><c:param name="nomClient" value="${ mapProcesseurs.key }" /></c:url>">
<img src="<c:url value="/inc/ajouterPanier.png"/>" alt="Ajouter au panier" />
</a>
</td>
</tr>
</c:forEach>
</table>
</c:otherwise>
</c:choose>
</div>
</body>
</html> |