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 :

[selectManyListbox] lenteur du a un a4j:support


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Par défaut [selectManyListbox] lenteur du a un a4j:support
    salut,

    j'aimerais des info pour savoir pourquoi lorsque j'utilise une <h:selectManyListbox> en complément avec un <a4j:support> de richFace, il y a des temps de latences où tout est bloqué après une sélection dans la listbox.

    je dois attendre quelques secondes avant de pouvoir sélectionner un autre élément de la liste. C'est l'horreur lorsqu'il y a des sélections multiples.

    voici mon code JSF:
    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
     
    <h:panelGroup id="#{cptPreequipBackBean.id}" columns="1">
      <h:panelGrid id="#{cptPreequipBackBean.id}" columns="1">
        <h:outputText id="#{cptPreequipBackBean.id}"
                      value="#{msg.gestionCptPreequip_ville_livraison}"/
        </h:panelGrid>
     
        <h:panelGrid id="#{cptPreequipBackBean.id}" columns="1" columnClasses="col_250left">							
          <h:selectManyListbox id="vList" style="height: 140px; width: 220px;"
                               styleClass="inputFormMultiSelect"
                               value="#{cptPreequipBackBean.deliveryCitySelected}">
     
             <a4j:support id="vList_support"
                          event="onchange"
                          action="#{cptPreequipBackBean.updateNbCitySelected}"
                          reRender="vSelected" />			 
     
             <f:selectItems value="#{cptPreequipBackBean.deliveryCityItems}"/>
          </h:selectManyListbox>
     
         <h:outputText id="vSelected" value="#cptPreequipBackBean.nbCitySelected}"/>								
      </h:panelGrid>
    </h:panelGroup>
    la méthode updateNbCitySelected() construit une chaîne de caractère du type : "6 éléments sélectionnés"

    il n'y a aucun gros traitement susceptible de prendre du temps.
    c'est pourquoi je ne comprend pas cette lenteur.

    j'ai aussi essayé d'utiliser les options:
    - ajaxSingle="true"
    - limiteToList="true"

    car je supposé que la page JSF envoyer tout le formulaire. Mais même en utilisant ces 2 options le problème n'est pas résolu. En plus de ça il y a un nouveau bug qui vient se rajouter.
    en utilisant ces 2 options, à chaque fois que je sélectionne un élément, la variable "deliveryCitySelected" contient 2 occurrences de l'élément sélectionné, c'est fou comme comportement.

    si quelqu'un a déjà eu ce problème ou a des piste, je suis preneur


    Merci

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    bizard ..tu es sur quel version de Richfaces?
    le problème de la lenteur est peu être du à ton action, tu as vérifier?

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    la lenteur peut s'expliquer par le nombre de composants impliqués. Il faut savoir que, si tu utilise richfaces, t'es liés au cycle jsf, tu dois donc envoyer tout, et tout (sauf dans le cas du single) subit la phase apply request value et éventuellement les processus de conversion (pour les valeur immediate).

    Par contre, je ne m'explique pas ton "blocage". Par définition le processus est asynchrone, donc on attends pas la réponse de la requete ajax pour rendre la main coté client. Donc tu devrais avoir quelque chose comme çà

    -clic
    -appel ajax1
    -clic
    -appel ajax2
    -clic
    -appel ajax3
    -réponse ajax1
    -réponse ajax2
    -clic
    -réponse ajax3
    -appel ajax4
    -réponse ajax4

    Franchement, pour le comportement que tu veux avoir, pourquoi ne pas rester coté client? Parce que là on a l'impression que t'essaie de tuer une mouche avec un bazooka. De toutes façons, quand on sélectionne plusieurs éléments, on en sélectionne souvent 4 ou 5 par seconde, faire des aller-retour coté serveur à cette vitesse, c'est un doux rêve, les latences réseaux obligent

  4. #4
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Par défaut
    pour répondre à ta question Sniper37, j'ai aussi pensé que c'était l'action qui en était la cause, du coup j'ai fait un test:
    j'ai commenté tout le code de l'action, ainsi lors de l'appel on exécute une fonction vide, malgré cela j'observe toujours ce blocage

  5. #5
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Par défaut
    en effet il est plus simple de rester côté client pour faire ce que je veux, mais dois-je procéder pour rester côté client.

    y-a-t-il un attribut du composant <h:selectManyListbox> qui permet de faire cela?

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    onchange, onclick, ... tous les attributs javascript du select html sont accessible depuis jsf.

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

Discussions similaires

  1. probléme avec <rich:comboBox et <a4j:support
    Par aymenroma dans le forum JSF
    Réponses: 5
    Dernier message: 10/06/2009, 15h02
  2. a4j: support + valeur du flag
    Par ghnawfal dans le forum JSF
    Réponses: 16
    Dernier message: 08/09/2008, 16h43
  3. <a4j:support> + Onchange
    Par helios2092 dans le forum JSF
    Réponses: 9
    Dernier message: 22/05/2008, 10h19
  4. Probleme avec h:selectOneListbox et a4j:support
    Par yoskater dans le forum JSF
    Réponses: 14
    Dernier message: 20/02/2008, 11h56
  5. Problème avec <a4j:support/>
    Par romaintaz dans le forum JSF
    Réponses: 2
    Dernier message: 17/10/2007, 17h12

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