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 :

Set focus pour les champs invalides


Sujet :

JSF Java

  1. #1
    Membre éclairé Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Par défaut Set focus pour les champs invalides
    bonjour,

    Je souhaiterais mettre le focus sur un des champs qui n'ont pas passé tout les étape de validation jsf, est ce que vous avez une idée sur comment je pourrais faire ca?

  2. #2
    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
    tu utilises quels jeux de composants?

  3. #3
    Membre éclairé Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Par défaut
    j'utilise richface.

  4. #4
    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 lastrecrue Voir le message
    j'utilise richface.
    tu peux utiliser l'attribut focus du composant support, et, le lier à un attribut d'un bean.
    utiliser un ajaxlistener, il est invoqué après la phase validation et conversion, tu peux donc, vérifier s'il y' a un message d'erreur dans la FaceContext, prendre l'id du composant et le mettre dans l'attribut du bean.

  5. #5
    Membre éclairé Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Par défaut
    je m'excuse de ne pas tous comprendre ... comment peut ont récupérer les id des compostant n'ayant pas réussi l'étape de la validation.

    merci ...

  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
    tu peux utiliser ses méthodes là :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FacesContext f = FacesContext.getCurrentInstance();
     
    // retourne  les clientsId 		
    Iterator<String> messages = f.getClientIdsWithMessages();
    Pour trouver les messages par un clientId:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Iterator<FacesMessage> messages = f.getMessages(clientId)

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut
    Peux-ton faire la même chose pour isefaces ?

  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 punix81 Voir le message
    Peux-ton faire la même chose pour isefaces ?
    Il faut lire la documentation, savoir si les composants ICEfaces dispose de l'attribut focus qui permet de donner choisir le composant qui prendra le focus après l'exécution de la requete ajax.

  9. #9
    Membre éclairé Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Par défaut
    re salut

    je voulais remercier pour votre aide, il me reste plus que le déclenchement du focus au bon moment .

    jessai de le fair avec rich:jquery

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <rich:jQuery query="focus()" timing="onload" selector="#{bean.invalideId}" rendered="#{!(empty dataBean.invalideId)}" />
    avec comme methode pour recupeer le Id :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public String getInvalideId() {
    		FacesContext currentInstance = FacesContext.getCurrentInstance();
    		Iterator<String> clientIdsWithMessages = currentInstance.getClientIdsWithMessages();
    		if (clientIdsWithMessages.hasNext()) {
     
    			String next = clientIdsWithMessages.next();
    			System.out.println("invalide id : " + next);
    			return "#"+next;
    		}
    		return null;
    	}
    mais malheureusement ca ne marche pas même si le code source de la page devrais bien fonctionner.

  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
    a4j:support et a4j:commandButton disposent d'un attribut focus que tu peux lier à ton champs du bean via les EL.

  11. #11
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Je te recommande d'utiliser la solution de Sniper37 et d'utiliser l'attribut focus.
    Toutefois, pour ton information, le selector de jQuery doit prendre un ID complet. Ainsi :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <h:form id="myForm">
        <h:inputText id="myField" ...>

    l'ID du champ est "myForm:myField". Toutefois, si tu passes cet ID directement à jQuery, il ne va rien trouver. Il faut en effet (doublement) échapper le caractère ":". Ainsi au lieu de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jQuery("#myForm:myField").focus();
    il te faudra faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jQuery("#myForm\\:myField").focus();
    Dans ton code Java, tu pourras faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return "#" + next.replaceAll(":", "\\\\:");
    (attention de bien mettre 4 \ pour au final en avoir bien 2)
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  12. #12
    Membre éclairé Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Par défaut
    ca marche impeccable avec deux \\... merci pour votre aide..

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

Discussions similaires

  1. AutoSize pour les Champs dans un DBGrid
    Par aliwassem dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/04/2007, 23h00
  2. [Tout langages] Comment Générer un ID alphanumérique pour les champs
    Par digital prophecy dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 04/12/2006, 18h47
  3. Equivalent de (*) pour les champs date et num
    Par pursang25 dans le forum Access
    Réponses: 3
    Dernier message: 11/07/2006, 21h39
  4. Mysql : choix des types pour les champs entre :
    Par Thierry8 dans le forum Administration
    Réponses: 3
    Dernier message: 14/06/2006, 08h22
  5. [MySQL] Associer lien pour les champs de ma liste
    Par nouna dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/10/2005, 18h59

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