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

Taglibs Java Discussion :

foreach qui ne fonctionne qu'une seule fois [JSTL]


Sujet :

Taglibs Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 28
    Par défaut foreach qui ne fonctionne qu'une seule fois
    Bonjour,

    En executant le code simple suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <c:forEach items="${employees}" var="employee" varStatus="status">
           ${employee.name}
    </c:forEach>
    <hr>
    <c:forEach items="${employees}" var="employee" varStatus="status">
    	${employee.name}
    </c:forEach>
    J'obtient bien la liste attendu avant le <hr> mais je n'obtient absolument rien en-dessous. C'est-à-dire que ma boucle foreach s'exécute très bien la première fois, mais pas la deuxième où elle ne renvoit rien du tout...

    Je ne comprend vraiment pas pourquoi. Des idées ?

  2. #2
    Expert confirmé

    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
    Par défaut
    Il est surprenant de vouloir itérer deux fois sur la même collection dans la même jsp mais cela devrait quand même fonctionner.

    Dans quel scope as-tu mis la collection employees ?
    Y-a-t'il du code autre que la balise <hr> entre les deux c:forEach ?
    Peux-tu montrer le code html généré ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 28
    Par défaut
    En réalité je ne cherche pas à afficher deux fois la même chose, mon traitement est un peu plus complexe mais je l'ai simplifié pour tenter de localiser la source de mon problème.

    Pour répondre à tes questions :
    - Ma variable employees est dans le scope request si je ne me trompe pas... Je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    model.put("employees", e);
    - Pas de code entre les deux balises foreach. Voici mon code en version complète :
    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
    <%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
    <%@ page isELIgnored="false" %>
     
    <html>
    	<head>
    		<title>Test</title>
     
    	</head>
    	<body>				
    		test
    		<c:forEach items="${employees}" var="employee" varStatus="status">
    			${employee.lastName}
    		</c:forEach>
    		<hr>
    		<c:forEach items="${employees}" var="employee" varStatus="status">
    			${employee.lastName}
    		</c:forEach>
    		fin test				
    	</body>
    </html>
    - le code html généré est le suivant, et correspond bien au contenu de ma variable:
    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
    <html>
    	<head>
    		<title>Test</title>
     
    	</head>
    	<body>				
    		test
     
    			dupont
     
    			DUPONT
     
    			DUPUY
     
    			DUPONT3
     
    			DUPONT
     
    			DUPONT
     
    			DUPUY
     
    			DUPUY
     
    			dupont
     
    			dupont
     
    			DUPUY
     
    			Dupont
     
    			DUPONT
     
    			DUP
     
    			DUPIERRE
     
    			Dupu
     
    			DUPRE
     
    			DUPIN
     
    			dupont
     
    			dupont
     
    		<hr>
     
     
    		fin test				
    	</body>
    </html>

  4. #4
    Expert confirmé

    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
    Par défaut
    Pour l'instant, je n'ai aucune idée de ce qui peut provoquer ce problème.

    Le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    model.put("employees", e);
    ne me renseigne pas sur le scope mais je ne pense pas que ce soit un problème de scope.

    J'ai vu que tu avais codé ceci dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
    cela signifie donc que tu es en J2EE 1.4 et que tu utilises la JSTL 1.1.

    As-tu bien ceci au début de ton web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <web-app id="tonAppli" xmlns="http://java.sun.com/xml/ns/j2ee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    	version="2.4">
    Si c'est bien le cas, peux-tu modifier la directive taglib comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    et voir si ça fonctionne mieux ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Par défaut
    et en changeant d'iterateur et de variable de statut ca marche toujours pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <body>				
    		test
    		<c:forEach items="${employees}" var="employee1" varStatus="status1">
    			${employee1.lastName}
    		</c:forEach>
    		<hr>
    		<c:forEach items="${employees}" var="employee2" varStatus="status2">
    			${employee2.lastName}
    		</c:forEach>
    		fin test				
    	</body>

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 28
    Par défaut
    @systho : J'ai essayé de changer l'itérateur mais mon problème persiste.

    @c_nvy : Je suis en Java 6 et le début de mon web.xml ressemble à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="ISO-8859-1"?>
     
    <!DOCTYPE web-app PUBLIC
    	"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    	"http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    Si il n'est pas correct, qu'aurais-je du mettre ?

    (J'ai tout de même essayer de changer la directive taglib même si dans mon cas cela n'avait peut-être pas de sens, et cela ne change rien)

    Quant à ma version de JSTL j'avoue ne pas la connaitre. Y'a-t-il un moyen de le savoir ?

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

Discussions similaires

  1. pourquoi on error goto ne fonctionne qu'une seule fois ?
    Par alsimbad dans le forum Général VBA
    Réponses: 9
    Dernier message: 05/09/2014, 13h09
  2. requete sql qui ne fonctionne qu'une seule fois
    Par brice97431 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 30/07/2012, 16h11
  3. [AJAX] [XMLHttp][IE]Fonction qui ne fonctionne qu'une seule fois
    Par narnou dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/07/2007, 12h16
  4. Label qui ne change qu'une seule fois ...
    Par Christophe Charron dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/04/2006, 20h08
  5. fonction qui s'exécute qu'une seule fois sous Firefox
    Par la.sophe dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/03/2006, 11h02

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