servlet, method post et tableau asso

servlet, method post et tableau asso - Java - Programmation

Marsh Posté le 26-11-2008 à 11:14:12    

Bonjour,  
 
Je voulais savoir si quelqu'un pouvait m'aider, car j'essaie désespérément de récupérer dans ma servlet des variables postées depuis un formulaire et ce afin de créer un tableau associatif genre 2004 -> 75A, 2005->90B, 2010->95C (quoi, c'est sexuel ? :lol:). J'ai essayé avec foreach, HashMap et des request.getParameterValues (c'est souligné en rouge) mais j'arrive pas à implémenter :cry:  
 
Cordialement,  
 
hpl76 :bounce:


Message édité par hpl76 le 26-11-2008 à 11:16:39
Reply

Marsh Posté le 26-11-2008 à 11:14:12   

Reply

Marsh Posté le 26-11-2008 à 11:21:50    

le foreach marche pas parce getParameterValues retourne une Enumeration; et c'est pas Iterable.
 
tu peux essayer de wrapper ton enum dans une List avec List l = new List(request.getParameterValues("tonparam" )), ou en utilisant les méthodes de java.util.Collections.
 
sinon, passer par un web framework genre stripes, struts, spring-MVC... te permettra de passer par des comportements précablés pour le passage de tableaux


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 26-11-2008 à 12:12:18    

Merci brisssou pour ton apport. L'alternative c'est :
 
- soit je fais mon traitement dans ma JSP directement avec le foreach
- soit je poste mes valeurs à ma servlet.
 
Je débute et ne sais pas ce qui est mieux, j'arrive pas à construire ce fichu tableau :
 
20AR -> aze98f7
fa65 -> 67z7eff4
2010 -> 5646544
 
La première valeur étant une clef unique et la deuxième colonne la valeur qui lui est associé. Même si j'avais  
1 -> 20AR -> aze98f7
2 -> fa65 -> 67z7eff4
...
Ca pourrait le faire. Je sais faire sous PHP mais là je bute.  
 
request.getParameterValues est toujours souligné en rouge, j'ai pourtant fait les bons imports (enfin je crois)
 
Vu mon niveau, j'ai repris à partir d'un tuto  :(


---------------
T'as pas de couilles au cul et quand tu en as c'est pas les tiennes :)
Reply

Marsh Posté le 26-11-2008 à 12:16:30    

Citation :

request.getParameterValues est toujours souligné en rouge


 
Montre nous ton code car avant de trouver quelque chose qui marche, il faut trouver quelque chose qui compile

Reply

Marsh Posté le 26-11-2008 à 12:26:27    

Bonjour Bidem et merci. J'avais commencé par quelque qui se rapprochait un peu de ce que je voulais faire. Ci-dessous le code du tuto :
 

Code :
  1. import java.io.*;
  2. import javax.servlet.*;
  3. import javax.servlet.http.*;
  4. import java.util.*;
  5. public class myfs extends HttpServlet {
  6.   public void doGet(HttpServletRequest request,
  7.                     HttpServletResponse response)
  8.       throws ServletException, IOException {
  9.     response.setContentType("text/html" );
  10.     PrintWriter out = response.getWriter();
  11.     out.println("<html><body>\n" +
  12.                 "<h1>Tableau des paramètres</h1>\n" +
  13.                 "<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n" +
  14.                 "<tr>\n" +
  15.                 "<th>Nom</th><th>Valeur(s)</th>" );
  16.     Enumeration NomsParam = request.getParameterNames();
  17.     while(NomsParam.hasMoreElements()) {
  18.       String NomParam = (String)NomsParam.nextElement();
  19.       out.println("<tr><td>" + NomParam + "</td></tr>\n" );
  20.       String[] ValeursParam = request.getParameterValues(NomParam);
  21.       if (ValeursParam.length() == 1) {       
  22. String ValeurParam = ValeursParam[0];
  23.         if (ValeurParam.length() == 0)         
  24.  out.println("<td><b>Aucune valeur</i></td>" );
  25.         else          out.println(ValeurParam);     
  26.       }
  27.       else {
  28.         out.println("<td><ul>" );       
  29. for(int i=0; i < ValeursParam.length(); i++) {
  30.           out.println("<li>" + ValeursParam[i] + "</li>" );       
  31. }
  32.         out.println("</ul></td></tr>" );     
  33.       }   
  34.     }
  35.     out.println("</table>\n</body></html>" ); 
  36.   }
  37.   public void doPost(HttpServletRequest request,
  38.                      HttpServletResponse response)
  39.       throws ServletException, IOException {   
  40. doGet(request, response); 
  41.   }
  42. }


 
Dans cet exemple les lignes :
if (ValeursParam.length() == 1) {  
et
for(int i=0; i < ValeursParam.length(); i++) {
sont soulignées en rouge.
 
Cordialement,  
 
hpl76


---------------
T'as pas de couilles au cul et quand tu en as c'est pas les tiennes :)
Reply

Marsh Posté le 26-11-2008 à 13:59:32    

Code :
  1. String[] ValeursParam = request.getParameterValues(NomParam);
  2. if (ValeursParam.length() == 1) {


Tu as un tableau là et pour avoir sa longueur, on accède à l'attribut length et non à la méthode length() ;)
 

Code :
  1. if (ValeursParam.length == 1) {

Reply

Marsh Posté le 26-11-2008 à 14:29:13    

Quel coup d'oeil. T'es un chef bidem et moi une copie de Gilbert Montagné  :sol:  
 
J'arrive maintenant à récupérer toutes les valeurs en vrac mais je suis pas sur que je puisse arriver à mes fins avec un getParam...Je t'explique si tu as du temps :
 
Sur mon formulaire en amont, j'ai grosso modo :
 
unicité / prénom / nom / zone de saisie
16401E / Guy / Tare / un champ libre de commentaires
31032F / Yves / Vremort / un champ libre de commentaires
aefa45 / Paul / Poule / un champ libre de commentaires
 
Comment  ferais-tu en quelque sorte pour mettre en corrélation la zone de saisie 1 avec 16401E, la zone de saisie 2 à 31032F etc dans le but de faire un update général. Je cherche à faire de l'associatif comme en PHP mais je galère.
 
Merci de ton soutien.
 
hpl76


---------------
T'as pas de couilles au cul et quand tu en as c'est pas les tiennes :)
Reply

Marsh Posté le 27-11-2008 à 11:57:58    

Bonjour,  
 
J'ai progressé mais je ne comprends pas pourquoi j'ai cette nouvelle erreur, ci-dessous mon code :
 

Code :
  1. Map m = new HashMap();
  2.             for(int i=0;i<tab1.length;i++){
  3.              m.put(tab1[i],tab2[i]);
  4.             }
  5.            
  6.             for (Iterator it = m.keySet().iterator() ; it.hasNext() ; ){
  7.             String key = it.next();//ligne qui pose problème, typage
  8.             System.out.println("key = " + key + " value = " + m.get(key));
  9.             }


 
Je cherche juste à parcourir et ressortir le couple clef/valeur pour chaque entrée de ma hashmap
 
Par avance merci.
 
hpl76  :bounce:


---------------
T'as pas de couilles au cul et quand tu en as c'est pas les tiennes :)
Reply

Marsh Posté le 27-11-2008 à 12:19:58    

je ne sais pas si c'est correct (en tout cas ca marche) mais j'ai "trouvé" en faisant :  
 

Code :
  1. //on parcourt et ressort le couple clef/valeur pour chaque entrée
  2.     for (Iterator it = m.keySet().iterator() ; it.hasNext() ; ){
  3.     Object key = it.next();
  4.     //on écrit
  5.     out.println("" + key.toString() + " > " + m.get(key).toString()+"<BR/>" );
  6.     }


 
Ca vous parrait juste ?
 
hpl76


Message édité par hpl76 le 27-11-2008 à 12:20:49

---------------
T'as pas de couilles au cul et quand tu en as c'est pas les tiennes :)
Reply

Marsh Posté le 27-11-2008 à 12:26:32    

dans une HashMap nature, les clefs sont des Object, ton premier code était ok si tu es certain de ne trouver que des String dans tes clefs, mais il manquait un cast :
 
String key = (String) it.next();


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 27-11-2008 à 12:26:32   

Reply

Marsh Posté le 27-11-2008 à 15:25:34    

Merci brisssou pour cette précision. J'ai appris beaucoup ces derniers temps. MERCI !


---------------
T'as pas de couilles au cul et quand tu en as c'est pas les tiennes :)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed