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 :

Utiliser Rich combobox comme un inputText


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2010
    Messages : 133
    Par défaut Utiliser Rich combobox comme un inputText
    Bonjour,

    J'aimerais savoir s'il est possible d'utiliser le composant rich combobox comme un h: inputtext. En effet, j'aimerais afficher la liste des utilisateurs dans un combobox et quand je clique sur le bouton "nouveau", j'aimerais que le combo se comporte comme un input et me permette d'ajouter un valeur à la liste déjà existante.

    Merci pour vos réponses.

  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 peux ajouter un a4j:support sur l'évènement onselect, tester si la valeur n'existe pas dans la liste l'ajouter..

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2010
    Messages : 133
    Par défaut
    Oui, je comprends.

    Mais j'ai déjà un premier souci. Quand je clique sur le bouton nouveau, j'aimerais que la zone de saisie (combobox) soit vide. Mais il me garde toujours la dernière valeur qui était là.
    J'ai pourtant utilisé un ajaxSingle et des reRender, mais ça ne change rien.

  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
    tu la remets à vide dans le bean ??

    ton code?

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2010
    Messages : 133
    Par défaut
    Voici le code.

    Quand je clique sur le bouton "Nouveau" il exécute la fonction add() suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	public void add(){			
    		changestate();
    		this.service = new Services();			
    		user_list = this.utilisateurService.findAll();
    		utilisateur = null;
    		loadComboUser();
    		nouveau = true;
    	}
    et ensuite la fonction create():
    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
    	user_list = this.utilisateurService.findAll();	
    		String lib = comboUser.getValue().toString();
    		this.utilisateur = utilisateurService.findByName(lib);		
    		if(nouveau){
    			try{
    				this.service.setUtilisateur(this.utilisateur);
    				this.servicesService.save(this.service);
    				loadComboUser();
    			}catch(Exception e){
    				e.printStackTrace();
    			}
    		}else{
    			this.service.setUtilisateur(this.utilisateur);
    			this.servicesService.modify(this.service);
    			loadComboUser();
    		}
    		changestate();
    	}

    permet simplement de valider les donneés que j'aurais entrer en vérifier si c'est une modification ou un ajout. Il existe bien évidement la méthode modify() associée au bouton modifier

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2010
    Messages : 133
    Par défaut
    je veux pouvoir créer un nouveau service en lui affectant un responsable. le responsable est directement choisi dans la liste des utilisateurs disponibles

  7. #7
    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 poster le code xhtml, je suppose que tu as bien tester ton code java, et le nouveau service est bien enregistré..

  8. #8
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2010
    Messages : 133
    Par défaut
    On m'a demandé d'appliquer une méthode différente de celle du départ. J'ai essayé mais je reste coincé car je ne sais vraiment pas comment faire. J'ai testé en utilisant du javascript qui ne marche pas. Sur internet, je n'ai pas trouvé grand chose, mais je sais pourtant que certains l'on déjà fait. J'explique


    Dans mon formulaire j'ai un combobox (UICOmbobox richfaces) qui contient la liste des services. Lorsque je clique sur le bouton "Ajouter" qui permet d'ajouter une nouvau service. j'aimerais que le combo se cache et qu'à sa place s'affiche une zone de saisie inputtext me permettant ainsi de rentrer la donnée.

    Ma question est peut être idiote , mais j'ai vraiment besoin de votre aide

    Merci

  9. #9
    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
    tout peut être gérer à l'aide d'un ou deux boolean sur l'attribut rendered de ton composant, sur l'action tu change la valeur du boolean et tu fais reRender sur un composant qui englobe les deux (input et comboBox).

  10. #10
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2010
    Messages : 133
    Par défaut
    C'est ce que j'ai fait. A la seule différence que j'ai crée deux composants comme suit :


    Pour le combobox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <h:panelGrid rendered="#{frmServiceBean.visible}" id="panservice" columns="2" styleClass="form">
    						<h:outputText value="Service : " />
    						<rich:comboBox id="combolibServ" binding="#{frmServiceBean.comboService}" suggestionValues="#{frmServiceBean.service_list}"
    						 immediate="true"  value="#{frmServiceBean.current_service}">
    						 	<a4j:support event="onselect" immediate="true" action="#{frmServiceBean.onSelectService}"
    						 		reRender= "panresp, panservice, crudresp" ajaxSingle="true" >
    							</a4j:support>
    						</rich:comboBox>										
    					</h:panelGrid>
    Pour l'input
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<h:panelGrid columns="2" id="enregLib" rendered="#{frmServiceBean.invisible}"  styleClass="form">	
    						<h:outputText value="Service : " />
    						<h:inputText id="libelleserv" value="#{frmServiceBean.service.libelle}" ></h:inputText>
    					</h:panelGrid>
    invisible ou invisible sont deux booléens. .
    Ainsi quand je clique sur le bouton "Ajouter" la fonction qui y est associée fait un changement de visibilité. J'initialise visible à true.

    Mais il n'y a aucune action qui s'exécute.

  11. #11
    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
    Il faut faire le reRender sur un composant global qui est toujours présent dans le DOM pas celui avec le rendered,
    soit tu mets la condition rendered dans les output/input et faire reRender sur le panelGrid,
    soit entourer le tout d'un outputPanel et faire le reRender sur ce dernier.

    Pas nécessaire d'avoir deux boolean tu peux faire la condition avec un seul.

  12. #12
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2010
    Messages : 133
    Par défaut
    Super ! Merci beaucoup Sniper37 !!! ça marche. Si on pouvait faire des bisous j'en ferai pleins lol !

    Mais sans blague, Merci encore pour ton aide et ta patience !!!

  13. #13
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2010
    Messages : 133
    Par défaut
    Sniper, j'ai un autre soucis.

    Il m'est impossible de récupérer la valeur saisie dans l'input. ça marche pour d'autre formulaire qui n'ont pas l'option rendered. est-ce cette option qui est en cause?

  14. #14
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2010
    Messages : 133
    Par défaut
    Il n' y a personne pour m'aider? Je viens encore de tester et même en retirant le rendered il y a cette même erreur.

    Pourtant ce n'est pas le premier formulaire que je fais. help

  15. #15
    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
    si le composant a l'attribut rendered à false, il n'est pas envoyé dans la requete sa valeur est null, mais tu dispose de la valeur de visible pour prendre soit la valeur de l'input ou la valeur du combBox.

  16. #16
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2010
    Messages : 133
    Par défaut
    Comment est ce que je peux faire ça? Je ne comprends pas trop.

Discussions similaires

  1. [C#] Utilisation de ComboBox
    Par Troopers dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/11/2009, 13h07
  2. [débutant] utiliser un tableau comme une frameset
    Par toudoux dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 09/02/2006, 09h16
  3. Utilisation de PHP comme système de template
    Par crazydiver_e2 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 25/01/2006, 15h48
  4. [curseurs] utiliser une variable comme nom de champ
    Par Christian31 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2005, 14h12
  5. Écriture dans un DBgrid quand utilise un query comme dataset
    Par dcayou dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/07/2004, 22h22

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