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 jsp : Sélectionner tout - Visualiser dans une fenêtre à part
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>