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 :

rafrichir la valeur d'un select


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Par défaut rafrichir la valeur d'un select
    j ai une page de recherche avec un bouton valider,
    au dessous un select pour la pagination du tableau resultat

    lorsque je fait une nouvelle rechrche le select garde selectioné la derniere page choisi
    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
    <h:form>
    		<%-- Choix du mois --%>
    		<h:panelGrid columns="2" id="gridPanel2" style="">
    			<h:outputText id="outputText2"
    				value="Mails envoyes depuis" />
    			<h:selectOneMenu id="monthsdd1"
    				style="left: 0px; top:-2px; position: relative;"
    				value="#{AdminStatListMail.month}" immediate="true"
    				valueChangeListener="#{AdminStatListMail.processMonthValueChange}">
    				<f:selectItems id="dropdown1SelectItems"
    					value="#{ApplicationBean1.months}" />
    			</h:selectOneMenu>
    		</h:panelGrid>
    
    		<h:panelGrid style="position:relative;left:200;">
    			<h:commandButton action="#{AdminStatListMail.calcMailList}"
    				id="btSubmit" value="Submit" image="resources/b_valider_a.gif" />
    		</h:panelGrid>
    	</h:form>
    
    
    	<h:panelGrid columns="5" id="gridPanel1"
    		style="left: 20px; position: relative;">
    		<h:form id="paginationform1">
    			
    			<h:selectOneMenu id="midselect23" immediate="true"
    				onchange="this.form.submit();"
    				style="left: 0px; top:0px; position: relative;"
    				value="#{AdminStatListMail.currentPageStr}"
    				valueChangeListener ="#{AdminStatListMail.gotoPageAction}">
    				<f:selectItems id="pagesSelectItems"
    					value="#{SessionBean1.mailPagesList}" />
    			</h:selectOneMenu>
    
    			
    		</h:form>
    	</h:panelGrid>
    
    	<h:dataTable styleClass="arrayClass" headerClass=""
    		id="dataTableListMail" rowClasses="list-row-even,list-row-odd"
    		value="#{SessionBean1.currentMails}" var="currentRow" width="557">
    comment forcer le recalcule de la value : value="#{AdminStatListMail.currentPageStr}" c'est a dire le getCurrentPageStr ?

    any idea
    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2007
    Messages : 35
    Par défaut
    En renseignant l'attribut immediate avec "true" cela implique que le composant JSF est traité dans la phase Apply Request Values. Et donc que les phases où ton modèle est mis-à-jour ne sont pas traités. Donc la valeur obtenue avec le "value-binding" reste la même. Essaie en changeant immediate pour "false"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <h:selectOneMenu id="midselect23" immediate="false" . . . >
    </h:selectOneMenu>

  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
    Quand tu parle de nouvelle recherche, tu veux dire que tu soumet ton premier formulaire? Parce que comme les formulaires sont séparé, seul celui qui est soumis est traité par JSF, donc si la valeur dans ton select du bas est pas la bonne quand tu soumet le formulaire du haut, c'est que la valeur dans ton bean est pas correcte (il n'y a pas de submitted value donc jsf lit d'office depuis le bean)

  4. #4
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Par défaut
    effectivement pour une nouvelle recherche je submit le premier formulaire,
    et ce que je souhait c'est apres avoir recu la reponse la valeur du select soit rafrechi
    c'est pas la valeur du bean qui n'est pas correct mais seule le premier formulaire est traite alors que je veu apres la recherche actualiser le deuxieme form plus exactement la valeur du select qui doit etre reinitialise a la valeur 1 puisque j affiche la premiere page dur resultat de recherche

  5. #5
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Par défaut
    Citation Envoyé par COOL_DEV Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <h:selectOneMenu id="midselect23" immediate="false" . . . >
    </h:selectOneMenu>
    le immediate a false ne marche pas

  6. #6
    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
    Citation Envoyé par COOL_DEV Voir le message
    En renseignant l'attribut immediate avec "true" cela implique que le composant JSF est traité dans la phase Apply Request Values. Et donc que les phases où ton modèle est mis-à-jour ne sont pas traités. Donc la valeur obtenue avec le "value-binding" reste la même. Essaie en changeant immediate pour "false"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <h:selectOneMenu id="midselect23" immediate="false" . . . >
    </h:selectOneMenu>
    immediate est par défaut à false. L'interet de immediate est expliqué dans la FAQ
    il permet quand la valeur est à true de ne pas exécuter les phases validation et conversion, donc rien à voir avec l'update. De plus, la phase JSF update Model, fais l'update des UI composants dans le serveur, et pas du client.

  7. #7
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Par défaut
    alors des suggestions pour ce probleme ?!!

  8. #8
    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
    Citation Envoyé par carinia Voir le message
    alors des suggestions pour ce probleme ?!!
    tu ne peux pas utiliser Richfaces?

  9. #9
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Par défaut
    non c'est une contrainte j utilise du jsf pure

  10. #10
    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
    Citation Envoyé par carinia Voir le message
    non c'est une contrainte j utilise du jsf pure
    dommage ça aurait été plus simple sinon..
    donc tu peux faire quelque chose comme cela :


    dans le select:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    immediate="true" onchange="this.form.submit();" valueChangeListener="#{AdminStatListMail.processMonthValueChange}"
    et tu peux ajouter aussi à la fin de processMonthValueChange


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     FacesContext.getCurrentInstance().renderResponse();
    ça permet de ne pas passer par la validation si le composant n'est pas en immediate à true.

  11. #11
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Par défaut
    mais dans mon select des numeros de page j ai deja :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <h:selectOneMenu id="midselect23" immediate="true"
    				onchange="this.form.submit();"
    				value="#{AdminStatListMail.currentPageStr}"
    				valueChangeListener ="#{AdminStatListMail.gotoPageAction}">
    				<f:selectItems id="pagesSelectItems"
    					value="#{SessionBean1.mailPagesList}" />
    			</h:selectOneMenu>
    je ne peut pas le conditioner par le change value des mois

    tout ce que je veu c'est que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #{AdminStatListMail.currentPageStr}
    soit recalculer apres l'action du premier formulaire

  12. #12
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Par défaut
    j ai essayer de faire ca manuellement en forcant la valeur du select dans le onclick du bouton valider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="document.getElementById('midselect23').value=0;"
    et ca fait que je voie la valeur 1 puis ca reprend la derniere valeur avant le submit, c'est a dire la val du bind mais sans la recalculer

    donc ca ne marche pas non plus

  13. #13
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Par défaut
    j ai trouver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     onclick= "document.getElementById('body:paginationform1').Requery;"

  14. #14
    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
    Si le bean renvoie la bonne valeur, alors le select doit afficher la bonne valeur, et pour une bonne raison:


    Le select se trouve dans un formulaire séparé, il n'est donc pas soumis par le client. Il n'y a donc pas de submitted value pour ce champ (que le immediate soit à true ou pas n'y change absolument rien). Donc, lors du rendu, la valeur affichée est exactement celle présente dans le bean.

    La seule raison pour laquelle le select aurait une autre valeur que celle du bean serait que, dans la liste des valeur disponibles, celle-ci ne soit pas présente, et donc le navigateur tombe par défaut sur la première de la liste.


    Ajoute ceci à coté du select pour être certain de ce qui est dans le bean:

    <h:outputText value="#{AdminStatListMail.currentPageStr}"/>

  15. #15
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Si le bean renvoie la bonne valeur, alors le select doit afficher la bonne valeur, et pour une bonne raison:


    Le select se trouve dans un formulaire séparé, il n'est donc pas soumis par le client. Il n'y a donc pas de submitted value pour ce champ (que le immediate soit à true ou pas n'y change absolument rien). Donc, lors du rendu, la valeur affichée est exactement celle présente dans le bean.

    La seule raison pour laquelle le select aurait une autre valeur que celle du bean serait que, dans la liste des valeur disponibles, celle-ci ne soit pas présente, et donc le navigateur tombe par défaut sur la première de la liste.


    Ajoute ceci à coté du select pour être certain de ce qui est dans le bean:

    <h:outputText value="#{AdminStatListMail.currentPageStr}"/>
    voila le sénario,
    je fait une recherche, liste aficher avec le select a 1 puis que la premiere page est affichée du résultat
    je choisi la page 10 par exemple dans le select, alors la page 10 du resultat s'affiche
    je fait une nouvelle recherche, le select garde la valeur 10 alors que le resultat correspond a la page 1

    je ne comprend pas, j ai ajouter le outputtext il affiche bien la valeur 0 pourtant le select n'affiche pas le 1 correspondant mais l ancienne valeur?!!

  16. #16
    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
    Citation Envoyé par carinia Voir le message
    voila le sénario,
    je fait une recherche, liste aficher avec le select a 1
    je fait une nouvelle recherche, le select garde la valeur 10 alors que le resultat correspond a la page 1
    j ai ajouter le outputtext il affiche bien la valeur 0 pourtant le select n'affiche pas le 1 correspondant mais l ancienne valeur?!!
    comme tu le dit, le bean contient 0, et t'espère que le navigateur va sélectionner '1' :s


    Possible aussi que le formulaire soit prérempli par le navigateur (sauvegarde des formulaires).

    Pourrais-tu nous fournir

    1) le html de ta page juste avant que tu soumette la nouvelle recherche
    2) le html de ton select juste après la soumission (quand il sélectionne la "mauvaise" valeur)

  17. #17
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Par défaut
    j ai tenter de faire un submit du deuxieme formulaire dans le onclick du bouton valider
    et j ai limpression qu il ne fait pas le submit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("body:paginationform1").submit();

  18. #18
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Pourrais-tu nous fournir

    1) le html de ta page juste avant que tu soumette la nouvelle recherche
    2) le html de ton select juste après la soumission (quand il sélectionne la "mauvaise" valeur)
    le code est enorme il depasse le nombre de caractère possible

  19. #19
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    comme tu le dit, le bean contient 0, et t'espère que le navigateur va sélectionner '1' :s
    les numero de page commance a 0 ils sont decaler de 1
    0 - 1

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

Discussions similaires

  1. [MySQL] Pb d'insertion d'une valeur de champ select dans une Bdd
    Par Mimisator dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 20/10/2005, 18h51
  2. selectionner automatiquement plusieurs valeurs ds un select
    Par shadowR dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/09/2005, 16h00
  3. Vérifier la valeur d'un <select> <opt...> </s
    Par Sigur ros dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 08/08/2005, 16h40
  4. [sgbd] Recuperer valeurs d'un Select dans un tableau
    Par Mu_Belier dans le forum SGBD
    Réponses: 16
    Dernier message: 27/05/2005, 15h46
  5. récupérer la valeur d'un select dans un autre
    Par alexander dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/03/2005, 19h43

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