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]Problème de rafraichissement Ajax


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 56
    Par défaut [RichFaces]Problème de rafraichissement Ajax
    Bonjour,

    Mon problème est un peu complexe à expliquer donc j'espère que vous comprendrez ^^'

    J'ai un tableau (<rich:scrollableDataTable>), sur lequel je définis un attribut <a4j:support>. Mon but est que lorsque l'on clique sur une ligne du tableau, une information sur le statut de cette ligne est vérifiée dans le controller (Java) et des boutons de Modification et Annulation (contenus dans le panel d'id panelBouttons) sont désactivés ou non en fonction de ce statut.

    Bien entendu, rien ne se produit au niveau de ces fichus boutons quand je clique sur une ligne du tableau

    Voici le code du tableau avec seulement la colonne de statut
    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
     
    <rich:scrollableDataTable 
    	height="#{pageController.view.height}px" width="560px"
    	rows="#{pageController.view.rows}" columnClasses="col"
    	var="page" sortMode="single"
    	value="#{pageController.model.pages}"
    	binding="#{pageController.view.tablePage}"
    	id="tablePages"
    	selection="#{pageController.model.selectedPage}">
     
    	<a4j:support event="onselectionchange"
    		onsubmit="#{pageController.model.clickRowJs}"
    		action="#{pageController.actionRowSelected}"
    		reRender="panelBouttons, pg10, pg11, groupError" id="sp0" />
    	<rich:column id="colStatut"
    		sortExpression="#{page.statut}">
    		<f:facet name="header">
    			<h:outputText styleClass="headerText"
    				value="#{bundle.e19_page_libelle_col2}" 
    				d="labelCol2" />
    		</f:facet>
    		<h:outputText value="#{page.statut}" id="statutValue" />
    	</rich:column>
    </rich:scrollableDataTable>
    Le panel contenant les boutons:

    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
     
    <h:panelGrid border="0" columns="4" width="560px"
    	id="panelBouttons">
    	<h:commandButton
    		value="#{bundle.e19_page_bouton_valider}"
    		id="btnValider" styleClass="rsButton"
    		disabled="#{pageController.model.validerDisabled}"
    		binding="#{pageController.view.validerBouton}">
    		<a4j:support reRender="tablePages, pg100"
    			action="#{pageController.actionValider}"
    			event="onclick" disableDefault="true" />
    	</h:commandButton>
    		<a4j:commandButton styleClass="rsButton"
    			value="#{bundle.e19_page_bouton_rafraichir}"
    			id="btnRafraichir"
    			action="#{pageController.actionRefresh}"
    			reRender="PageForm" />
    </h:panelGrid>
    La méthode java qui s'occupe de la mise à jour de l'état des boutons:

    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
     
    	private void updateBouttons(Page pPage) {
    		String lStatut = pPage.getStatutId();
     
    		// grisage des boutons annuler et valider
    		getModel().setAnnulerDisabled(true);
    		getModel().setValiderDisabled(true);
     
    		getView().getAnnulerBouton().setDisabled(true);
    		getView().getNouveauBouton().setDisabled(true);
     
    		// seulement si l'utilisateur possède les droits de modification
    		if (!getModel().isAccesModif()) {
    			// si le statut est "A contrôler" les boutons annuler et valider
    			// sont actifs
    			if (lStatut.equals(Constantes.A_CONTROLER)) {
    				getModel().setAnnulerDisabled(false);
    				getModel().setValiderDisabled(false);
     
    				getView().getAnnulerBouton().setDisabled(false);
    				getView().getNouveauBouton().setDisabled(false);
    			} else if (lStatut.equals(Constantes.EN_COURS)) { // si le statut
    				// est "En
    				// cours" le
    				// bouton
    				// annuler est
    				// activé
    				getModel().setAnnulerDisabled(false);
     
    				getView().getAnnulerBouton().setDisabled(false);
    			}
    		}
    	}
    Merci de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 49
    Par défaut
    j'ai tout relu 3 fois mais je vois pas à quel moment tu appel la methode updatebuttons.

    Si j'ai bien compris, elle est sencé se déclencher lorsque tu clique sur une ligne de ton tableau ?

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 56
    Par défaut
    Désolé, j'étais sur que j'allais oublier de donner une précision

    En fait, c'est la méthode actionRowSelected qui est appellée en action du <a4j:support> du tableau, et qui appelle updateBouttons

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 49
    Par défaut
    Fais voir le code de cette fonction

    Elle sert a quoi ? tu ne pourrais pas appeler directement updatebouton ?

  5. #5
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 56
    Par défaut
    Cette fonction en fait, va s'occuper d'afficher des détails sur la ligne sélectionnée dans des <h:inputText> désactivés (pour soucis d'affichage)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	public void actionRowSelected() {
    		getModel().setErrorDisplay("none");
    		// Récupération de la ligne sélectionnée
    		Page lPage = getSelectedRow();
     
    		// mise à jour des champs de la zone de détail
    		getModel().setMessageInformatif(lPage .getMessageInformatif());
    		getModel().setNbLignesFichier(lPage .getNbLignesFichier());
    		getModel().setNbLignesIntegrees(lPage .getNbLignesIntegrees());
    		getModel().setNbLignesRejetees(lPage .getNbLignesRejetees());
     
    		updateBouttons(lPage );
    	}

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 49
    Par défaut
    Pas évident de déceler le problème.

    T'as essayer de mettre des points d'arret dans tes tests de la methode updatebutton pour voir ou il passe ?

  7. #7
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 56
    Par défaut
    Citation Envoyé par saubin Voir le message
    Pas évident de déceler le problème.

    T'as essayer de mettre des points d'arret dans tes tests de la methode updatebutton pour voir ou il passe ?
    Je pense jamais à débogguer

    Il est apparu que le faire le disabled sur le bouton valider levait une nullException, le HtmlCommandButton n'était donc pas instancié (pourtant son attribut binding dans la jsp est correctement remplie il me semble )
    Fin bon j'ai réinstancié le bouton dans le model (pas forcément très propre mais au moins ça fait une résolution temporaire voire définitive)

    Merci les gars

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

Discussions similaires

  1. [Ajax-Jquery] Problème de "rafraichissement" de partialview
    Par antrax2013 dans le forum ASP.NET MVC
    Réponses: 3
    Dernier message: 12/01/2011, 15h53
  2. [AJAX] Rafraichissement de tableau avec ajax
    Par Lini62 dans le forum AJAX
    Réponses: 5
    Dernier message: 19/10/2010, 17h21
  3. Réponses: 0
    Dernier message: 22/04/2009, 17h05
  4. AJAX: Problème de rafraichissement de la page
    Par mooosh dans le forum ASP.NET
    Réponses: 5
    Dernier message: 15/04/2008, 11h03
  5. [AJAX] Rafraichissement
    Par ViRouF dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/07/2006, 14h04

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