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 :

Lenteur datatable car double requête


Sujet :

JSF Java

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Août 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 39
    Par défaut Lenteur datatable car double requête
    Bonjour,

    Je développe ma première application avec JSF, EJB3.
    J'ai une page qui contient une liste des communes. J'utilise le datatable de RichFaces

    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
     
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <%@ taglib uri="http://richfaces.ajax4jsf.org/rich" prefix="rich"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <h2>Liste des communes</h2>
    <f:view>
    <f:subview id="entete">
    <jsp:include page="entete.jsp"></jsp:include>
    </f:subview>
    <h:form id="listDesCommunes2">
    	<rich:datascroller for="maListe"/>
     
    	<rich:spacer height="30" />
    	<rich:dataTable id="maListe" width="483" rows="10" value="#{communeBackingBean.communeList}" var="commune">
    		<h:column>
    			<f:facet name="header">
    				<h:outputText styleClass="headerText" value="Département" />
    			</f:facet>
    				<h:outputText value="#{commune.pk.p_ci_dep}" />
    		</h:column>
    		<h:column>
    			<f:facet name="header">
    				<h:outputText styleClass="headerText" value="Commune Insee" />
    			</f:facet>
    				<h:outputText value="#{commune.pk.p_ci_com}" />
    		</h:column>
    		<h:column>
    			<f:facet name="header">
    				<h:outputText styleClass="headerText" value="Libellé" />
    			</f:facet>
    				<h:outputText value="#{commune.p_ci_lib}" />
    		</h:column>
    		<h:column>
     			<f:facet name="header">
     				<h:outputText  value="Modifier"/>
     			</f:facet>
     			<h:commandLink id="Edit" action="editCommune"  actionListener="#{communeBackingBean.loadCommune}">
    				 <h:outputText value="Edit" />
     				 <f:param id="editId" name="id" value="#{commune.pk}" />
     			 </h:commandLink>
     		</h:column>
    	</rich:dataTable>
    </h:form>
    </f:view>
    </body>
    </html>
    Mon problème est le suivant : C'est très très lent.
    J'ai remarqué dans mes traces que la requête de selection était lancée deux fois au chargement de la page

    Une idée ?
    merci

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Ca peut arriver que le getXXX soit appelé deux fois...

    Essaye de récupérer tes infos aileur que dans le get si c'est le cas...

  3. #3
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour.
    J'ai remarqué le même comportement dans myFaces et Tomahawk.
    La solution ? cacher soi même le résultat de la requête.

    Un exemple. Je présume que tu passes par un DataModel, non ?

    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
     
    public class TonBackingBean {
      private DataModel model;
      private refresh = true;
     
      public DataModel getModel(){
         if(refresh){
           List<X> list = tonXDAO.findAll();
           model.setWrappedData(list);
           refresh=false;
         }
         return model;
      }
     
      public String createEntity(){
        :
        :
        refresh = true;
        return "azerty";
      }
     
      :
    }
    Voilou.
    Mais s'il y'a des modifications concurrentes par plusieurs utilisateurs ... bonjour les dégâts !

    Bonne chance.

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Août 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 39
    Par défaut
    Bonjour,

    merci pour vos réponses.
    En fait le problème vient de l'utilisation du composant <rich:datascroller> de richeFAces.
    Il y a donc une requête pour le datatable, et une requête pour datascroller.
    Bof...

Discussions similaires

  1. [SQL] Double requête avec jointure
    Par frakosun dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 17/01/2008, 15h03
  2. Double Requête impossible
    Par Arsene12 dans le forum WinDev
    Réponses: 2
    Dernier message: 04/01/2008, 20h02
  3. Double requête access 2007
    Par sobkillerbots dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/10/2007, 11h55
  4. Lenteur d'execution des requêtes de l'exe
    Par napegadie dans le forum VB.NET
    Réponses: 4
    Dernier message: 28/08/2007, 11h51
  5. [MySQL] Lenteur pour exécuter un requête SQL
    Par jean tof dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/01/2007, 13h59

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