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

JSF Java Discussion :

JSF: resultat de requete affiche 2 fois


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut JSF: resultat de requete affiche 2 fois
    Bonjour,
    Je developpe une application en JSF (1.2) /JSP et j'utilise le server Tomcat.
    J'ai cree un lien sur ma page JSP qui reference une methode de mon bean. Cette methode effectue une requete sur une table et renvoie le resultat sous forme de list.
    La page Jsp de resultat affiche la liste dans un dataTable.
    Le resultat de ma requete apparait 2 fois dans ma page.
    Est ce que quelqu'un aurait une suggestion? Pourquoi j'obtiens deux fois ma liste d'elements?

    J'ai teste ma requete et elle ne retourne le resultat qu'une fois.
    J'ai teste mon bean et il ne retourne qu'une fois le resultat.

    Merci d'avance.

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Par défaut
    Peux-tu nous montrer un peu de code ?

  3. #3
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    Voici le dataTable de ma page jsp:

    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
    <h:form>
     <h:dataTable id="dt1" value="#{collectionBrowse.listCollection}" var="item" >
     
    <h:column>
    <f:facet name="header">
    <h:outputText value="id" />
    </f:facet> 
    <h:outputText  value="#{item.idCollection}" ></h:outputText>
    </h:column>
    <h:column>
    <f:facet name="header">
    <h:outputText value="Name" />
    </f:facet> 
    <h:outputLink value="/test/pages/collection.browse.jsf" >
    <h:outputText  value="#{item.name}" ></h:outputText>
    </h:outputLink>
    </h:column>
     
    </h:dataTable>
    </h:form>
    Mon Bean est declare en scope request.

    voici le code de la methode qui genere ma liste:
    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
     
    		public List getListCollection() throws ClassNotFoundException {
    		    try
    		    {		      
    		    Class.forName( .... // my db connection
     
    		    try {
    		    ps = con.createStatement();
    		    try {
    		    rs = ps.executeQuery(
    		    	" SELECT DISTINCT c.id as idCollection,c.name as name,"+	
    		    	" c.creation as creation,count(i.id) as number"+
    		    	" FROM collection as c , file as f, script as i"+
    		    	" WHERE c.id=f.idCollection AND f.id=i.idFile" +
    		    	" group by c.id order by name");
    		    iter = listCollection.listIterator();
    		    while(rs.next()){
    		    	iter.add(new CollectionInfo(rs.getInt(1), rs.getString(2),rs.getString(3),
    		    		  rs.getInt(4)));
    		      }
    		    }
    		    finally { ps.close(); }	      
    		    }
    		    catch (SQLException e)
    		    {
    		      try {
    				throw new IOException  ("Error Data : " + e.getMessage());
    		      } catch (IOException e1) {
    				// TODO Auto-generated catch block
    				e1.printStackTrace();
    		      }
    		    }
    		    } catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		    finally {   }
     
    		return listCollection;
    		}
    ma classe CollectionInfo:
    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
     
    public class CollectionInfo {
     
    	Integer idCollection;
    	String name;
    	String creation;
    	Integer nb;
     
    	public CollectionInfo(Integer idCollection,String name,String creation,Integer nb) {
    		this.idCollection = idCollection;
    		this.name = name;
    		this.creation = creation;
    		this.nb = nb;
     
    	}
    	public Integer getIdCollection() {
    			return idCollection;
    	}
    	public String getName(){
    			return name;
    	}
    	public String getCreation() {
    		return creation;
    	}
    	public Integer getnb() {
    			return nb;
    	}
    }
    il y a certainement une meilleure methode pour retourner le resultat de ma requete. Je debute juste avec les JSF.

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 154
    Par défaut
    Bon alors en fait les tables ont tendance à appeller plusieurs fois le getter de la liste lorsqu'ils souhaitent l'afficher.

    La solution serait de dissocier ta requête et ton getter.
    Si ta liste ne bouge pas, tu l'initialises dans le controleur de ton handler... ton get ne te servira alors pas.
    Si la liste doit être modifiée, tu fais une méthode qui permet de réinitialiser ta liste (tu pourras l'appeller à la fin de tes différentes actions).

  5. #5
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    Merci pour la reponse.
    L'initialisation de ma liste dans ma function a resolu le probleme.
    merci

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

Discussions similaires

  1. [MySQL] Requete (afficher resultat en fonction de la premiere lettre)
    Par maxime06 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 23/06/2010, 11h26
  2. [C#] Affichage resultat de requete dans 2 Labels
    Par kenzo080 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 02/06/2004, 20h07
  3. Afficher 2 fois le meme JPanel
    Par cmoulin dans le forum Composants
    Réponses: 3
    Dernier message: 11/05/2004, 09h33
  4. résultat d'une requete affiché par mois
    Par zorely dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/05/2004, 07h18
  5. resultat de requete jointe
    Par jjn1er dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/09/2003, 10h50

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