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 :

[RichFaces] Mettre fin aux requêtes "poll"


Sujet :

JSF Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 39
    Points : 27
    Points
    27
    Par défaut [RichFaces] Mettre fin aux requêtes "poll"
    Bonjour,

    Mon problème est pour une fois très simple à expliquer. Je désire actualiser un composant RichFaces avec des requêtes AJAX. J'utilise donc le tag <a4j:poll.../>.
    Celui-ci fonctionne très bien. Mais je voudrais qu'il n'envoi qu'une seule requête pour que l'actualisation ne se fasse qu'une fois à l'affichage de la page. Dans l'attribut oncomplete du tag j'ai donc mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oncomplete="A4J.AJAX.StopPoll('refreshForm:poll');"
    Mais cela ne fonctionne pas, les requêtes sont envoyées toutes les secondes sans interruption.

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <f:view>
    	
    	<h:form id="refreshForm">
    		<a4j:commandButton value="Refresh" reRender="userDataTable" />
    		<a4j:poll interval="1000" reRender="userDataTable" oncomplete="A4J.AJAX.StopPoll('refreshForm:poll');" />
    	</h:form>
    	<rich:tabPanel switchType="ajax" style="margin-top:20px" id="panel">
    		<rich:tab label="Check user certificate" id="tab">
    			<rich:dataTable value="#{userDataBB.keysList}" var="key"
    				style="float:left; width:250px;margin-right:230px"
    				id="userDataTable">
    				<f:facet name="header">
    					<h:outputText value="User data" />
    J'ai également essayé de mettre la fonction JS dans un ontabchange => même résultat.

  2. #2
    Membre averti Avatar de Shinzul
    Homme Profil pro
    Lecteur assidu de code source
    Inscrit en
    Janvier 2008
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lecteur assidu de code source
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 174
    Points : 333
    Points
    333
    Par défaut
    Je ne comprend pas trop en fait

    Si tu souhaite que ce ne soit rafraichi qu'au chargement de la page pas besoin de mettre un poll qui justement est fait pour rafraîchir selon un interval de temps.

    Si c'est juste un rafraîchissement ponctuel pourquoi ne pas déclencher un a4j:support sur l’évènement qui va bien (Par exemple sur le ontabchange) ?
    N'oubliez pas le quand vous avez votre solution.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 39
    Points : 27
    Points
    27
    Par défaut
    Tout d'abord merci pour ta réponse.

    Je vais essayer d'expliquer clairement pourquoi je désire faire un appel AJAX après le chargement de la page.
    En fait sur cette page il y a une applet (invisible) qui met à jour les backing bean côté serveur (par requêtes http). Cette applet se chargeant en même temps que la page, son traitement est réalisé après que la page se soit affichée. Du coup côté client ce ne sont pas les données à jour qui sont affichées

    L'appel AJAX via a4j:poll permet de recalculer l'arbre des composants côté serveur et ainsi mettre à jour la table côté client. Voilà pourquoi je voudrais exécuter cet appel une seule fois (avec un intervalle de 1s).

    Le tag a4j:support permet, comme tu l'as dit, d'actualiser un composant suite à une action de l'utilisateur. Je voudrais pour ma part que cela soit automatique.

  4. #4
    Membre averti Avatar de Shinzul
    Homme Profil pro
    Lecteur assidu de code source
    Inscrit en
    Janvier 2008
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lecteur assidu de code source
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 174
    Points : 333
    Points
    333
    Par défaut
    Ok je comprend mieux ton problème effectivement ma solution ne va pas être optimale pour ton cas.

    Donc moi ce que je te dirai d'essayer dans ce cas c'est de mettre en place une fonction js avec le tag jsFunction comme l'exemple sur la librairie <a4j:jsFunction name="updateName" reRender="showname">.

    Après pour l'appel si ton applet est modifiable tu peut faire un appel à une fonction js après que tes infos soit mises à jour (comme ca tu es sur ), sinon je mettrai bien un traitement JS qui attend que le document soit chargé, time 1sec et fait appel à la fonction de rafraîchissement.


    En dernier recours je te dirai d'essayer de mettre une variable d'état de la mise a jour (que tu mettra a jour après l'apel de ton applet) qui serait dans un <h:inputHidden />.
    Sur ton poll je mettrais un js sur le onSubmit (normalement c'est gérer sleon la documentation ) qui vérifie que la valeur de ce champs et si c'est modifié arrete le poll grâce à A4J.AJAX.StopPoll('refreshForm:poll');Voila j'espère qu'une de ces solution pourra résoudre ton problème.
    N'oubliez pas le quand vous avez votre solution.

Discussions similaires

  1. Google veut mettre fin aux textes illisibles du CAPTCHA
    Par Hinault Romaric dans le forum Actualités
    Réponses: 24
    Dernier message: 06/05/2015, 14h55
  2. Haut débit : le gouvernement veut mettre fin aux publicités trompeuses
    Par Hinault Romaric dans le forum Actualités
    Réponses: 63
    Dernier message: 25/12/2013, 18h07
  3. Mozilla veut mettre fin aux textes clignotants
    Par Stéphane le calme dans le forum Firefox
    Réponses: 6
    Dernier message: 12/04/2013, 01h41

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