bonsoir à tous,
je voudrais developper un panier avec les servlets, j'ai en premier lieu un probleme avec les vecteurs:
*classe produit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
public class Produit 
{public String nomProduit;
public int qteProduit;// pas de principe d'encapsulation, pas de methode accesseur par manque de temp... je met le tout public
 
public Produit (String nomProduit,int qteProduit)
{this.nomProduit=nomProduit;
this.qteProduit=qteProduit;
}
 
}
* servlet Panier
Code : 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
60
61
62
63
64
65
66
67
68
69
 
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class Panier extends HttpServlet
 { public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
 	{int i; int j; String [] tab={"pomme","orange","banane","figue"};
     res.setContentType("text/html");
     PrintWriter out = res.getWriter();
 
    out.println("<html><body><form method='post' action='Essai'><table>");
    out.println("<input type='submit' value='envoyer'>");
     for( j=0;j<=tab.length;j++)
     	{
     	  out.println("<tr><br><td>"+tab[j]+"</td><td><select name="+tab[j]+">");
     	  for( i=0;i<=100;i++)
     	   {out.println("<option value="+i+">"+i+"</option>");}
     	   out.println("</select></td></tr>");
     	}
     out.println("</table></form></body></html>");
 
 
 
}
 
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{   int val;String nom;
     Produit  element;
     int i;
     boolean trouve=false;
	 res.setContentType("text/html");
     PrintWriter out = res.getWriter();
     HttpSession session=req.getSession(true);//recuperer la session si elle existe deja ou en creer une.
     Vector v=(Vector)session.getAttribute("vec");
     if (v==null) v=new Vector();//creer un vecteur s'il existe pas.
     Enumeration enu=req.getParameterNames();//recuperation des noms des parametre dans une enumeration.
 
     while (enu.hasMoreElements())
     	{nom=(String)enu.nextElement();//nom du param
     	val=Integer.parseInt(req.getParameter(nom));//valeur du param respectif
     	if (val!=0)  //pour une quantité non nulle chercher s'il ya deja un article de même nom pour y ajouter la valeur.
                           {for(i=0;i<v.size()||trouve;i++)
     	              {element=(Produit)v.elementAt(i);//recuperation d'un objet produit du vecteur
     	              if ((element.nomProduit).equals(nom)) // si le nom du produit commandé existe deja dans le vecteur faire:
                                                        {element.qteProduit+=val; // ajouter a la quantité ancienne la nouvelle quantité
     	                                                     v.remove(i); //supprimer l'ancienne case contenant l'objet produit avec l'ancienne quantité
     	                                                     v.addElement(element);//et la remplacer par le produit avec la nouvelle quantité(il parait que l'erreur se situe la).
     	                                                     trouve=true;}
     	              }
     	if (!trouve) //si le produit n'a pas été commandé avant.
 
                             {Produit prod=new  Produit(nom,val);//en creer un nouveau
	                 v.addElement(prod);}// et l'ajouter au vecteur
 
     	             }
 
	    }
	 session.setAttribute("vec",v);  //retourner le vecteur qui a été modifier dans la session
 
 	for(i=0;i<v.size();i++)// pour l'affichage du vecteur
 	{element=(Produit)v.elementAt(i);
    out.println("nom produit:"+element.nomProduit+"&& quantité"+element.qteProduit+"<br>");}
    doGet(req,res);
 
 
}}
ca me retourne une exception:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
exception 
 
java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
	java.util.Vector.elementAt(Unknown Source)
	Essai.doPost(Essai.java:44)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 
 
note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.20.
en faite le principe du code est de recuperer les nom et valeur respectives du formulaire, puis chercher si pour une valeur non nulle ce produit a été deja commandé, pour faire ensuite la somme.
avez vous idée? je bloque la dessus
merci de votre aide !