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 :

Petit soucis Ajax


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 2
    Par défaut Petit soucis Ajax
    Bonjour,

    J'ai déjà utilisé Ajax avec succès dans quelques pages JSF en utilisant essentiellement a4j:support, a4j:outputPanel et a4j:region, mais j'ai ici un problème dont je ne trouve pas la solution tout seul...

    Je souhaite afficher un truc qui ressemble à la capture jointe. J'ai une liste de sous-projets contenant au départ seulement la ligne avec les deux combo.
    Le contenu de la seconde combo dépend de la sélection dans la première (ça, c'est OK); puis l'affichage de la seconde ligne dépend de la sélection dans la seconde combo. C'est là que ça coince : ma seconde ligne n'est jamais mise à jour (si elle est présente au chargement initial, elle reste toujours visible; inversement, si elle n'est pas présente au départ, elle n'apparaît jamais).

    Voici le fragment de code concerné:
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    <c:forEach var="ssProjet" items="#{activity_bean.sousProjets}"
    	varStatus="props">
    	<sfx_t:foldingPanel loadingMode="client" expanded="#{ssProjet.visible}">
    		<f:facet name="caption">
    			<sfx_h:panelGroup>
    				<sfx_h:outputText value="#{messageSource['presentation.SOUS_PROJET_NUMERO']}" />
    				<sfx_h:outputText value="#{ssProjet.libelle}" />
    			</sfx_h:panelGroup>
    		</f:facet>
     
    		<a4j:outputPanel id="PanelSsProjet_#{props.index}" layout="none">
    		<sfx_h:panelGrid columns="4" columnClasses="formLibelle2,formValue2,formLibelle2,formValue2">
     
    			<sfx_h:panelGroup colspan="1">
    				<sfx_h:outputLabel for="TypeProtocole_#{props.index}" value="#{messageSource['presentation.TYPE_PROTOCOLE']}" />
    			</sfx_h:panelGroup>
    			<sfx_h:panelGroup colspan="1">
    				<a4j:region>
    				<sfx_h:selectOneMenu id="TypeProtocole_#{props.index}" 
    					value="#{ssProjet.typeProtocole}"
    					converter="ReferenceDataConverter">
    					<a4j:support event="onchange" reRender="Protocole_#{props.index}"
    						ajaxSingle="true" action="#{ssProjet.updateListeProtocoles}"
    						onchange="disableSafeNavigation();"
    						oncomplete="enableSafeNavigation();"/>
    					<f:selectItems value="#{activity_bean.typologieProtocoleSelect}" />
    				</sfx_h:selectOneMenu>
    				<sfx_h:message for="TypeProtocole_#{props.index}" />
    				</a4j:region>
    			</sfx_h:panelGroup>
    			<sfx_h:panelGroup colspan="1">
    				<sfx_t:outputLabelRequired for="Protocole_#{props.index}" value="#{messageSource['presentation.PROTOCOLE']}" />
    			</sfx_h:panelGroup>
    			<sfx_h:panelGroup colspan="1">
    				<a4j:region>
    				<sfx_h:selectOneMenu id="Protocole_#{props.index}"
    					value="#{ssProjet.protocole}"
    					converter="DisplayableConverter">
    					<a4j:support event="onchange" reRender="PanelSsProjet_#{props.index}"
    						ajaxSingle="true" action="#{ssProjet.updateAgaRequired}"
    						onchange="disableSafeNavigation();"
    						oncomplete="enableSafeNavigation();"/>
    					<f:selectItems value="#{ssProjet.protocolesPossibles}" />
    					<f:validator validatorId="required" />
    				</sfx_h:selectOneMenu>
    				<sfx_h:message for="Protocole_#{props.index}" />
    				</a4j:region>
    			</sfx_h:panelGroup>
     
     
    			<sfx_h:panelGroup rendered="#{ssProjet.agaRequired }"
    				colspan="#{empty paramColspanLibelle ? '1' : paramColspanLibelle}">
    				<sfx_t:outputLabelRequired for="nomAga_#{props.index}" value="Ligne 2" />
    			</sfx_h:panelGroup>
     
    			<sfx_h:panelGroup rendered="#{ssProjet.agaRequired }"
    				colspan="#{empty paramColspanValeur ? '3' : paramColspanValeur}">
    				<sfx_h:outputText id="nomAga_#{props.index}"	value="Hello World" />
    			</sfx_h:panelGroup>
     
    		</sfx_h:panelGrid>
    		</a4j:outputPanel>
    		<!--sfx_t:commandButtonSupprimer id="Supprimer_ssProjet_#{props.index}"
    			action="#{activity_bean.actionSupprimerSsProjet}"
    			actionListener="#{ssProjet.selectionnePourAction}" />
    		<sfx_t:confirmation id="confSupprimerSsProjet_#{props.index}"
    			invokerId="Supprimer_ssProjet_#{props.index}" invokerEventName="onclick"
    			captionText="#{messageSource['presentation.sousprojet.supprimer.titre']}"
    			message="#{messageSource['presentation.sousprojet.supprimer.texte']}"
    			details="" okButtonText="#{messageSource['presentation.OK']}"
    			cancelButtonText="#{messageSource['presentation.ANNULER']}" /-->
    	</sfx_t:foldingPanel>
    </c:forEach>
    J'ai bien un a4j:outputPanel autour du panelGrid (pour permettre l'apparition de la seconde ligne, absente de l'arbre DOM au départ).
    Je constate que la valeur de agaRequired est bien mise à jour en fonction de ma sélection dans la seconde combo.
    Le getter de la propriété agaRequired est appelée 2 fois s'il vaut false, et 8 fois s'il vaut true, ce qui pour moi accrédite le fait que la seconde ligne de la table est présente dans l'arbre DOM quand il le faut.
    Je ne suis pas convaincu de la nécessité des régions que j'ai défini, mais les enlever ne change rien.

    Si vous avez des suggestions...

    Merci

    Tug

    PS : les sfx_h: correspondent à une surcouche des h: traditionnels;
    les disableSafeNavigation() et enableSafeNavigation() sont liés au framework maison et n'interfèrent a priori pas ici.
    Images attachées Images attachées  

  2. #2
    Candidat au Club
    Inscrit en
    Janvier 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 2
    Par défaut
    Re-bonjour.

    j'ai réussi à faire marcher mon écran : je supprime le outputPanel et je mets son id directement sur le panelGrid:
    <sfx_h:panelGrid columns="4" id="PanelSsProjet_#{props.index}"
    columnClasses="formLibelle2,formValue2,formLibelle2,formValue2">

    Ça marche, mais je ne comprends pas pourquoi ça ne marchait pas avant...

    Tug

  3. #3
    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
    enlève les regions, même si le problème persiste, et donne le code de a4j:support et de la combo qui ne se met pas à jour..

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

Discussions similaires

  1. [AJAX] Petit soucis requete AJAX
    Par mitchreward dans le forum AJAX
    Réponses: 2
    Dernier message: 02/03/2013, 11h05
  2. [ZF 1.11] Petit soucis entre Ajax et validation d'un formulaire
    Par hsmr dans le forum MVC
    Réponses: 1
    Dernier message: 07/01/2013, 14h20
  3. [AJAX] Petit souci avec Ajax qui ne semble pas marcher correctement
    Par gentil2005 dans le forum jQuery
    Réponses: 2
    Dernier message: 25/10/2012, 12h53
  4. petit soucis avec ajax
    Par playa dans le forum ASP.NET MVC
    Réponses: 2
    Dernier message: 08/03/2011, 09h47
  5. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52

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