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 :

[PF-Calendar] Action lors du changement de date avec le clavier


Sujet :

JSF Java

  1. #1
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut [PF-Calendar] Action lors du changement de date avec le clavier
    Bonjour,

    J'ai le composant calendar suivant dans une de mes pages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <p:calendar id="datePeriodeFin"  value="#{controleHeuresMandatForm.datePeriodeFin}" style="width:96%" navigator="true"
    		label="datePeriodeFin" pattern="dd.MM.yyyy" mask="true" locale="fr" >
    	<p:ajax event="dateSelect" listener="#{controleHeuresMandatForm.updateLists}"  update="controleHeuresMandatForm:heures" /> 
    </p:calendar>
    Avec l'event ajax "dateSelect", je mets à jour la liste des éléments affichés en fonction de la date. Tout fonctionne très bien si j'utilise le calendrier pour sélectionner la date.

    Si par contre, je tape la date au clavier, rien ne se passe, l'event ajax n'est pas appelé (normal vu qu'il est destiné à la sélection par le calendrier)
    Mais du coup, comment faire pour appeler ma méthode de chargement de ma liste lorsque je tape la date au clavier ? J'ai essayé en ajoutant l'event "blur", mais l'action se passe avant d'avoir affecté la nouvelle date à mon backing bean.

    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    As-tu essayé <p:ajax event="change" .../> ? Ça semble plus adapté au traitement, sur blur, il serait appelé à chaque sortie de zone...
    Si le contenu n'a pas été envoyé à ton ManagedBean, il suffit de rajouter l'attribut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    process="datePeriodeFin"
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Du coup c'est la sélection avec le calendrier qui ne fonctionne plus

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    C'est normal, il faut les 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <p:ajax event="change" ... />
    <p:ajax event="dateSelect" ... />
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    J'avais pas pensé à mettre les 2

    Merci beaucoup

  6. #6
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Hello,

    Je reviens vers toi car j'ai détecté encore un petit soucis.
    Mon calendar est défini comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <p:calendar id="currentDate"
    		value="#{saisirHeuresForm.currentDate}" style="width:96%"
    		navigator="true" label="currentDate" pattern="dd.MM.yyyy"
    		mask="true" locale="fr" immediate="true" >
    	<p:ajax event="dateSelect" listener="#{saisirHeuresForm.controleValiditeDateSaisie()}"
    		update="saisirHeuresForm:heures
    		saisirHeuresForm:heures:createHeureBtn saisirHeuresForm:dayName
    		saisirHeuresForm:totauxHeures" />
    	<p:ajax event="change" listener="#{saisirHeuresForm.controleValiditeDateSaisie()}"
    		update="saisirHeuresForm:heures
    		saisirHeuresForm:heures:createHeureBtn saisirHeuresForm:dayName
    		saisirHeuresForm:totauxHeures" />
    </p:calendar>
    J'ai bien l'appel à la méthode controleValiditeDateSaisie() mais la propriété currentDate n'est pas à jour. L'appel à la méthode se fait avant d'attribuer la nouvelle valeur à la propriété.

    C'est sûrement tout con, mais je ne vois pas ce que je peux/dois ajouter pour corriger cela

    Merci pour ton aide

  7. #7
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Bon en fait j'ai trouvé un parade....

    J'appelle la méthode controleValiditeDateSaisie() directement dans la méthode setCurrentDate() et j'ai enlevé le paramètre listener des balises ajax
    J'espère que c'est une bonne pratique

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Normalement on passe par un validator pour faire le contrôle (une classe qui implémente javax.faces.validator.Validator).
    Celui-ci sera appelé automatiquement si bien sûr tu enlèves le immediate="true" qui bypass le contrôle.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    D'accord mais c'est pas vraiment un validateur.

    En fait, lorsque l'on change de date, j'ai cette méthode qui met à jour un flag qui indique si on a le droit de créer/modifier/supprimer un élément à cette date-là.
    Si oui, rien de spécial, si non, les boutons sont grisés et la table n'est pas éditable mais en aucun cas, il y a une notion de validation du formulaire.

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Euh... je n'ai pas compris là...
    Quand tu changes la date avec ce composant, le composant change d'apparence ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Pas le composant calendar lui-même.

    Les composants en 1 permettent de changer la date
    Les composants en 2 permettent l'édition des données

    Quand la date change, ma méthode controler...() met à jour un flag qui est ensuite utilisé avec le paramètre disabled=... des composants en 2
    Nom : saisieheure.png
Affichages : 332
Taille : 24,2 Ko

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    D'accord...
    Du coup, ce n'est pas vraiment un validator mais bien une fonction de type listener avec un update qu'il faut.
    Ton problème vient de immediate="true" qui n'applique pas les valeurs au modèle.
    Tu as une raison particulière d'avoir mis cet attribut ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    D'accord, alors non je n'ai pas de raison particulière si ce n'est peut-être un test qui est resté.
    J'ai enlevé le immediate=true et remis le listener sur les balises ajax et enlevé l'appel à la méthode control..() dans la métode setCurrentDate() et ça semble bien fonctionner

    Mais comment ça se fait que ça ne marche pas avec immediate=true ? Je pensais que ça permettait de bypasser la validation mais que du coup ça passe dans tout les coups

    un grand merci pour ton aide

  14. #14
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Il faut bien connaître le cycle de JSF pour faire correctement une application JSF
    Garde ceci en tête
    Nom : JSF-Lifecycle.png
Affichages : 331
Taille : 164,4 Ko

    Comme tu peux le voir, il n'y a pas que la phase de validation qui est bypassée par immediate="true"
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Très bien, merci pour le diagramme.

    Encore merci pour tout

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

Discussions similaires

  1. [XL-2003] changement de date lors d'une copie d'un onglet à un autre
    Par liliesma dans le forum Excel
    Réponses: 1
    Dernier message: 30/03/2012, 16h27
  2. Réponses: 6
    Dernier message: 05/01/2010, 15h40
  3. UPDATE Auto lors d'un changement de date
    Par dsr57 dans le forum Développement
    Réponses: 7
    Dernier message: 04/08/2008, 13h48
  4. Changement de date lors de l'importation
    Par LaPanic dans le forum Excel
    Réponses: 5
    Dernier message: 18/07/2007, 10h29
  5. Réponses: 9
    Dernier message: 16/01/2006, 14h16

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