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?
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?
tu utilises quels jeux de composants?
Articles: Richfaces - JBosstools pour JSF.
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.
Articles: Richfaces - JBosstools pour JSF.
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 ...
tu peux utiliser ses méthodes là :
Pour trouver les messages par un clientId:
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();
Code : Sélectionner tout - Visualiser dans une fenêtre à part Iterator<FacesMessage> messages = f.getMessages(clientId)
Articles: Richfaces - JBosstools pour JSF.
Peux-ton faire la même chose pour isefaces ?
Articles: Richfaces - JBosstools pour JSF.
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
avec comme methode pour recupeer le Id :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <rich:jQuery query="focus()" timing="onload" selector="#{bean.invalideId}" rendered="#{!(empty dataBean.invalideId)}" />
mais malheureusement ca ne marche pas même si le code source de la page devrais bien fonctionner.
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; }
a4j:support et a4j:commandButton disposent d'un attribut focus que tu peux lier à ton champs du bean via les EL.
Articles: Richfaces - JBosstools pour JSF.
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 :
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 jQuery("#myForm\\:myField").focus();
(attention de bien mettre 4 \ pour au final en avoir bien 2)
Code : Sélectionner tout - Visualiser dans une fenêtre à part return "#" + next.replaceAll(":", "\\\\:");
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
ca marche impeccable avec deux \\... merci pour votre aide..
Partager