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 :

Récuperer un élément du selectOneMenu


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 17
    Par défaut Récuperer un élément du selectOneMenu
    je suis débutante, j'utilise jsf hibernate et spring: j'ai créé un formulaire pour pouvoir stocké des données dans ma base .Dans lequel j'ai mi un selectOneMenu pour récupérer des données d'une autre table pour stocker l’élément choisis après dans la table cible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		<p:selectOneMenu value="#{ProjetBean.projet}">
    						<f:selectItem itemLabel="choississez un projet" />
    						<f:selectItems value="#{ProjetBean.projetList}" var="projets"
    							itemValue="#{projets.titre}" itemLabel="#{projets.titre}" />
    					</p:selectOneMenu>
    Svp comment je peut récupérer le projet choisi pour l'enregistrer dans la table? et merci d'avance

  2. #2
    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 : 45
    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
    Comme pour tous les input en jsf, il est stocké par JSF dans le bean, que tu a référencé via la propriété value:

    #{ProjetBean.projet}

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 17
    Par défaut
    merci tchize_ mais le problème que j'ai un un formulaire qui contient le selectOneMenu qui permet d'enregistrer les tacheemploye dans un table associative entre la table projet et employe

    l'ajout fontionne normalement si je ne choisit aucun projet et insertion s'effectue dans la table parcontre si je choisi un projet du liste de selectOneMenu, le boutton ajout ne fonctionne pas
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <h:form dir="ltr" id="TacheemployeAddForm">
     
    			<p:dialog header="Ajouter Projet" widgetVar="TacheemployeAdd"
    				resizable="false" id="TacheemployeAdd" showEffect="fade"
    				hideEffect="explode" >
    		<center>
    				<p:selectOneMenu value="#{TacheemployeBean.projet}" > 
    						<f:selectItem itemLabel="choississez un projet" /> -->
    					<f:selectItems value="#{TacheemployeBean.projetList}" var="projets" 
    							itemValue="#{projets.titre}" itemLabel="#{projets.titre}" />
     
    					</p:selectOneMenu>
     
    			</center> 
    				<h:panelGrid columns="2" id="TacheemployePanelAdd">
     
    					<h:outputLabel value="idtache :" />
    					<p:inputText id="idtache"
    						value="#{TacheemployeBean.tacheemploye.idtache}">
    					</p:inputText>
     
    					<h:outputLabel value="descriptiontache :" />
    					<p:inputText id="descriptiontache"
    						value="#{TacheemployeBean.tacheemploye.descriptiontache}">
    					</p:inputText>
     
     
    					<p:outputLabel for="dateDebuttache" value="dateDebuttache:" />
    					<p:calendar id="dateDebuttache"
    						value="#{TacheemployeBean.tacheemploye.datedebutparticipation}"
    						locale="de" navigator="true" pattern="yyyy-MMM-dd" />
     
     
    					<p:outputLabel for="dateFintache" value="dateFintache:" />
    					<p:calendar id="dateFintache"
    						value="#{TacheemployeBean.tacheemploye.datefinparticipation}"
    						locale="de" navigator="true" pattern="yyyy-MMM-dd" />
     
    					<f:facet name="footer">
    						<p:spacer height="50px;"></p:spacer>
     
    						<p:commandButton id="add" value="Ajouter"
    							action="#{TacheemployeBean.addTacheemploye()}" type="submit"
    							update="TacheemployeForm" ajax="true" />
    						<p:commandButton value="Annuler" type="reset"
    							oncomplete="TacheemployeAdd.hide()" />
    					</f:facet>
     
    				</h:panelGrid>
    			</p:dialog>
    		</h:form>
     
    		public void addTacheemploye() {
     
    		System.out.println("fonction addBean begin");
    		try {
     
    			tacheemploye.setEmploye(employe); 
    			 tacheemploye.setProjet(projet);
    			getTacheemployeService().addTacheemploye(tacheemploye);
    		} catch (Exception ex) {
    			FacesMessage message = new FacesMessage(
    					FacesMessage.SEVERITY_ERROR, "Error updating data", "NOK!!");
    			FacesContext.getCurrentInstance().addMessage(null, message);
    			ex.printStackTrace();
    		}
    		closePopUp("TacheemployeAdd");
     
    		renitializeTacheemploye(tacheemploye);
    		System.out.println("fonction addBean end");
    	}
    Pouvez vous m'aider svp

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je suppose que tu t'attends à récupérer un objet représentant le projet et là, tu as une erreur de cast.
    Avec les composants de type "selectOneMenu", il faut associer un converter qui va reconvertir la valeur String issue de la requête (de ton navigateur vers l'application) en objet "Projet" (si tel est le nom de la classe que tu utilises)
    Bref, ce serait un truc comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <p:selectOneMenu value="..." converter="monConverterPourProjet" ...>
     
    </p:selectOneMenu>
    Le converter doit implémenter l'interface javax.faces.convert.Converter, voici un exemple
    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
     
    @FacesConverter(value="devisStatutConverter")
    public class DevisStatutConverter implements Converter
    {
        @Override
        public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value)
        {
            try
            {
                DevisStatut devisStatut = DevisVPIEJBLocator.getInstance().getDevisVPIFacadeLocal().getDevisStatutByCode(value); 
                return devisStatut;
            }
            catch (Exception e) 
            {
                System.out.println(e.toString());
            }
            return null;
        }
     
        @Override
        public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object o)
        {
            if (o == null)
            {
                return null;
            }
            if (o instanceof DevisStatut)
            {
                return ((DevisStatut)o).getCode().toString();
            }
            return o.toString();
        }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 17
    Par défaut
    merci OButterlin mais le console n'affiche aucun erreur c'est pourquoi j'ai pa compris la source du probleme
    j'ai deja chercher avant et j'ai trouver ce truc converter mais j'ai pas bien compris les exemples, pouvez vous m'expliquer comment l'utiliser svp ?

  6. #6
    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 : 45
    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
    les formulaires html ne supportent que le texte pour les valeur. JSF travaille avec des objets. Le converter a pour but de convertir de et vers des chaine de caractère. Par exemple la conversion vers string pourrait être l'id dans la base de donnée et la conversion vers objet pourrait faire un select dans la base de données. Et JSF n'affiche pas ses erreur dans la console, sauf exceptions, mais dans la balise h:messages que tu as probablement du oublier.

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LotusFleur Voir le message
    merci OButterlin mais le console n'affiche aucun erreur c'est pourquoi j'ai pa compris la source du probleme
    j'ai deja chercher avant et j'ai trouver ce truc converter mais j'ai pas bien compris les exemples, pouvez vous m'expliquer comment l'utiliser svp ?
    Les messages d'erreur liés aux conversions ne sont pas forcément affichées, ça dépend de la présence et/ou du paramétrage de certains composants comme <h:message>
    Pour ce qui est de l'exemple, c'est ce que je t'ai mis comme code...
    Dans le principe, la méthode getAsString(...) est appelée à la génération de la page et la méthode getAsObject(...) est appelée dans la phase de chargement des données du request vers le ManagedBean
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [DOM] Récuperer un élément du DOM
    Par Don-Leplang dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/02/2008, 10h51
  2. Récuperer un élément d'un GridView
    Par reeda dans le forum Windows Forms
    Réponses: 9
    Dernier message: 06/09/2007, 21h29
  3. Comment récuperer un élément dans une listview lors d'une sélection
    Par hellspawn_ludo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/04/2007, 02h37
  4. Réponses: 3
    Dernier message: 15/05/2006, 16h09
  5. [XSLT] Récuperer l'élément précedent
    Par Floyd dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/01/2006, 18h22

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