IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Boucle FOR dans une JSP


Sujet :

Servlets/JSP Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Boucle FOR dans une JSP
    Bonjour,

    Je suis actuellement sur un projet Servlet/JSP avec Eclipse 3.3 et JBoss 5.0, dans lequel je dois afficher une liste de clients récupérée en session et permettre à l'utilisateur de supprimer un client. J'ai donc pour cela écrit le code suivant, qui va récupérer en session l'ArrayList Clients contenant des objets Client, puis les afficher :

    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
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <%@ page import="java.util.ArrayList" %>
    <%@ page import="dal.Clients" %>
    <%@ page import="beans.Client" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Pizzeria Portofino - Panneau d administration</title>
    </head>
    <body>
    <% ArrayList<Client> listeClients = (ArrayList<Client>)session.getAttribute("listeClients");
    int i; %>
    <center><font size=5>Gestion des clients</font></center><br><br>
    <a href="../AdminServletAjoutPizza">Ajouter une pizza</a><br>
    <a href="../AdminServletListePizzas">Lister les pizzas</a><br>
    <a href="../AdminServletListeCommandes">Lister les commandes</a><br><br>
    <%
    System.out.println("\n###\n"+listeClients.size()+"\n###\n");
    System.out.println("\n###\n"+listeClients.get(0).getLogin()+"\n###\n");
    %>
    <% for (i=0;i==listeClients.size()-1;i++) { %>
    <%System.out.println("\n###########\nPassage dans la boucle\n############\n");%>
    <form method="POST" action="../AdminServletGestionClients">
    <center><table>
    <tr><td>Login : <%=listeClients.get(i).getLogin()%></td></tr>
    <tr><td>Nom : <%=listeClients.get(i).getNom()%></td>
    <td>Pr&eacute;nom : <%=listeClients.get(i).getPrenom()%></td></tr>
    <tr><td>Adresse : <%=listeClients.get(i).getAdresse()%></td></tr>
    <tr><td>Code Postal : <%=listeClients.get(i).getCodepostal()%></td>
    <td>Ville : <%=listeClients.get(i).getVille()%></td></tr>
    <tr><td>T&eacute;l&eacute;phone : <%=listeClients.get(i).getTelephone()%></td>
    <td>Portable : <%=listeClients.get(i).getPortable()%></td></tr>
    <tr><td><a href=mailto:<%=listeClients.get(i).getEmail()%>>Envoyer un mail au client</a>
    <input type="hidden" value=<%=listeClients.get(i).getLogin()%> name="login"></td></tr>
    <tr><td><input type="submit" value="Supprimer ce client"></td></tr>
    </table></center></form><br><br>
    <%} %>
    </body>
    </html>
    listeClients.size() prend la valeur 3, comme attendu, et listeClients.get(0).getLogin() renvoie bien le login du 1er client du tableau. En revanche, il n'y a aucun passage dans la boucle FOR, et la JSP n'affiche donc que le titre et les liens précédant la boucle. J'imagine que c'est une erreur stupide, mais depuis un bon moment que j'y réfléchis, je ne la trouve pas.

    Si quelqu'un a une idée, je suis preneur !

    Merci

  2. #2
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Et comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <% for (i=0; i<listeClients.size(); i++) { %>

  3. #3
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Tu peux d'ailleurs définir la variable i de type int directement dans la boucle for comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ( int i=0; i<listeClients.size(); i++ ) {

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Plus d'une heure de perdue parce que je ne sais même plus faire une boucle for correctement... J'suis encore plus débile que j'pensais, j'ferais mieux de me remettre au HTML

    En tout cas merci beaucoup pour ta réponse rapide

  5. #5
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    De rien.
    C'est dur de faire du Java/J2EE le dimanche.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 71
    Points : 77
    Points
    77
    Par défaut
    Salut,

    Pour faire plus "propre", il est préférable d'utiliser la jstl pour faire ce genre de truc :

    Faire un forEach avec JSTL

    Après, c'est toi qui vois..

    @+

    derek.mf

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Ou au moins niveau performance de passer par un itérateur... (ça évite de reparcourir la liste à chaque fois depuis le début) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (java.util.Iterator<Client> it; it=listeClients.iterator(); it.hasNext()) {
        Client client = it.next();
        // ...
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Boucle For dans une requete SQL
    Par laurent0 dans le forum Général Python
    Réponses: 2
    Dernier message: 10/08/2011, 17h41
  2. Boucle "for" dans une boucle "while"
    Par WhiteTigerZ dans le forum Général Java
    Réponses: 14
    Dernier message: 27/08/2010, 12h05
  3. Imbriquer une boucle for dans une condition if ?
    Par helkøwsky dans le forum Langage
    Réponses: 2
    Dernier message: 28/06/2010, 15h18
  4. [MySQL] Boucle for dans une requete avec jointure
    Par runcafre91 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/02/2010, 15h12
  5. Boucle FOR dans une animation
    Par vduez dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 20/05/2008, 07h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo