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 :

Problème d'affichage d'une ArrayList dans une JSP


Sujet :

Servlets/JSP Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Problème d'affichage d'une ArrayList dans une JSP
    Bonjour,

    Je travail sur un projet qui gère une compagnie aérienne, le client doit être capable de se connecter, d'effectuer une recherche puis de pouvoir réserver/annuler son billets.

    La ou je bloque un peu c'est au niveau de l'affichage du résultat de la recherche du client.

    J'ai créé un JSP me permettant de demander à l'utilisateur la ville de départ ainsi que la ville de destination.

    Je traite ces informations dans la servlet suivante :

    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
    @WebServlet("/RechercheVol")
    public class RechercheVol extends HttpServlet {
    	private static final long serialVersionUID = 1L;
     
        /**
         * @see HttpServlet#HttpServlet()
         */
        public RechercheVol() {
            super();
            // TODO Auto-generated constructor stub
        }
     
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
     
    		String depart = request.getParameter( "depart" );
            String arrive = request.getParameter( "arrive" );
            String date = request.getParameter( "date" );
     
     
     
            String message;
            /*
             * Initialisation du message à afficher : si un des champs obligatoires
             * du formulaire n'est pas renseigné, alors on affiche un message
             * d'erreur, sinon on affiche un message de succès
             */
            if ( depart.trim().isEmpty()  || arrive.trim().isEmpty() || date.isEmpty()  ) {
                message = "Erreur - Vous n'avez pas rempli tous les champs obligatoires. <br> <a href=\"creerUtilisateur.jsp\">Cliquez ici</a> pour accéder au formulaire de création d'un client.";
            } else {
                message = "Utilisateur créé avec succès !";
            }
     
           Vol unVol = new Vol();
           unVol.setVilleDepart(depart);
           unVol.setVilleDestination(arrive);
     
     
           List<Vol> listeResultat = GererCompagniesAvions.trouverVol(unVol);
     
     
            /* Ajout du bean et du message à l'objet requête */
            request.setAttribute("liste", listeResultat);
            request.setAttribute( "Vol", unVol );
            request.setAttribute( "message", message );
     
            /* Transmission à la page JSP en charge de l'affichage des données */
            this.getServletContext().getRequestDispatcher( "/affichageRechercheVol.jsp" ).forward( request, response );
     
     
     
    	}
     
     
     
     
    }
    Voici ma classe gererCompagnieAvion qui gère les requêtes et la connection avec ma base de données et dans laquelle il y à la fonction trouverVol() qui retourne une liste de vols :

    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
    public class GererCompagniesAvions 
    {
     
    	public GererCompagniesAvions(){}
     
     
    	public static List<Vol> trouverVol(Vol unVol)
    	{
     
    		String sql_query = "select * from vols where villeDepart='" 
    					+ unVol.getVilleDepart() + "' and villeDestination='" 
    						+ unVol.getVilleDestination() +"';";
     
    		List <Vol>listeVols =  new ArrayList<Vol>();
     
    		try 
    		{
     
    			DriverManager.registerDriver(new com.mysql.jdbc.Driver());
    			Connection conn = DriverManager
    					.getConnection("jdbc:mysql://localhost/CompagnieAvions?user=Admin&password=123");
    			Statement stmt = conn.createStatement();
     
    			if (stmt.execute(sql_query)) 
    			{
    				ResultSet rset = stmt.getResultSet();
     
    				while (rset.next()) 
    				{
    					Vol volTrouve = new Vol();
     
    					volTrouve.setIdVol(Integer.parseInt(rset.getString(1)));
    					DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.S");
    					DateTime dateVol = format.parseDateTime(rset.getString(2));
    					volTrouve.setDateVol(dateVol);
    					volTrouve.setVilleDepart(rset.getString(3));
    					volTrouve.setVilleDestination(rset.getString(4));
    					volTrouve.setPrixVol(Integer.parseInt(rset.getString(5)));
     
    					// System.out.println(rset.getString(3));
    					listeVols.add(volTrouve);
    				}
    				rset.close();
    			}
     
    			stmt.close();
    			conn.close();
    			} catch (SQLException e) {
    				System.out.println("Error Code:" + e.getErrorCode());
    				e.printStackTrace();
    			} catch (Exception ef) {
    				ef.printStackTrace();
    			}
    		return listeVols;
     
    	}
     
    }
    Voici ma JSP permettant l'affichage de cette liste
    Code html : 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
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Resultat de votre recherche</title>
    </head>
    <body>
    	 <%-- Affichage de la chaîne "message" transmise par la servlet --%>
            <p class="info">${ message }</p>
     
            <p>Depart : ${vol.depart }</p>
            <p>Arrive : ${vol.arrive }</p>
            <p>Date : ${vol.date }</p>
          <%  
            int i=0 ; 
            while(i< listeResultat.size()){
                    out.print(listeResultat.get(i).getIdVol() + " -- ");
                            out.print(listeResultat.get(i).getVilleDepart() + " -- ");
                            out.print(listeResultat.get(i).getVilleDestination()  + " -- ");
                            out.print(listeResultat.get(i).getPrixVol()  + " -- ");
                            out.print(listeResultat.get(i).getDateVol().toString("E dd/MM/yyyy HH:mm"));
                            
                            
                    
                    
          %>
    </body>
    </html>
    Ici je ne sais pas comment afficher tous les vols sachant que le.size ne fonctionne pas ... voila j'espere avoir été clair dans ma démarche et je serais très reconnaissant si quelqu'un pouvait m'aider.
    merci d'avance

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il faut déjà récupérer la liste dans l'attribut de scope request où tu la mets dans la servlet.

    Par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <% final List<Vol> listeResultat  = (List<Vol>) request.getAttribute ("liste");
    Ensuite tu peux boucler (utilise un forEach, ou un for, ou à la rigueur un while, mais pense surtout, dans ces 2 derniers cas, à incrémenter i au moins).

    Et pense à mettre les données dans des tags html, de type table par exemple, sinon tous les items de la liste vont s'afficher les uns à la suite des autres dans un même bloc de texte (à moins que c'est ce que tu veux faire).

    Tu peux également faire comme tu fais avec l'attribut Vol :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <table>
       <tbody>
          <c:forEach var="itemVol" items="${liste}" >
              <tr>
                  <td><c:out value="${itemVol.villeDepart}"></c:out></td>
                  <td><c:out value="${itemVol.villeDestination}"></c:out></td>
              </tr>
          </c;forEach>
       </tbody>
    </table>
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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