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 :

Problème de converter (JSF, hibernate et oracle BD)


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 44
    Par défaut Problème de converter (JSF, hibernate et oracle BD)
    Bonjour tout le monde
    Je sollicite votre aide dans un problème qui me torture depuis quelque jour.
    Je voudrai récupérer la valeur d'un select et la stocker dans la base de données en tant qu'objet et non pas String.
    Je vous explique davantage:
    Je voudrai ajouter un utilisateur en fournissant les informations nécessaires dans un formulaire d'une page JSF, parmi ces informations je dois spécifier le profil de cet utilisateur depuis une liste déroulante remplie dynamiquement depuis la table Profil de ma base de données. En choisissant le profil je voudrai que cette valeur soit récupérer en tant qu'objet et non pas String. J'ai utiliser un converter mais j'ai toujours l'erreur suivante:

    "j_idt5:list : erreur de validation. La valeur est incorrecte."

    Voila mon ManagedBean UtilisateurBean.java:
    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
     
    package Beans;
     
    import Dao.ProfilDao;
    import Dao.UtilisateurDao;
    import Entités.Profil;
    import Entités.Utilisateur;
    import java.util.ArrayList;
    import java.util.List;
    import javax.annotation.PostConstruct;
    import javax.faces.bean.ManagedBean;
     
    @ManagedBean
    public class UtilisateurBean {
     
        private Utilisateur utilisateur;
        private List<String> ListeIntituleProfil;
        private String selectedMenuItem;
     
        // Constructeurs:
        public UtilisateurBean() {
        }
     
        // Fonction d'initialisation du bean:
        @PostConstruct
        public void init()
        {
            if (utilisateur == null)
            {
                utilisateur = new Utilisateur();
            }
     
            ProfilDao p = new ProfilDao();
            ListeIntituleProfil = new ArrayList<>();
            ListeIntituleProfil = p.listeIntituleProfil();
     
        }
     
     
        // Setters et Getters:
        public Utilisateur getUtilisateur() {
            return utilisateur;
        }
     
        public void setUtilisateur(Utilisateur utilisateur) {
            this.utilisateur = utilisateur;
        }
     
        public List<String> getListeIntituleProfil() {
            return ListeIntituleProfil;
        }
     
        public void setListeIntituleProfil(List<String> ListeIntituleProfil) {
            this.ListeIntituleProfil = ListeIntituleProfil;
        }
     
        public String getSelectedMenuItem() {
            return selectedMenuItem;
        }
     
        public void setSelectedMenuItem(String selectedMenuItem) {
            this.selectedMenuItem = selectedMenuItem;
        }
     
     
     
     
         // Fonction qui ajoute un utiliateur à la BD:
        public String AjouterUtilisateur()
        {
            UtilisateurDao u = new UtilisateurDao();
            boolean resultat = u.AjoutUtilisateur(utilisateur);
     
            if(resultat==true)
            {
            return "succes";
            }
            else
            {
                return "echec";
            }
        }
     
     
        public String tester()
        {
            return "Test";
        }
     
    }
    L'entité Profil.java
    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
     
     
    package Entités;
     
    import java.io.Serializable;
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.OneToMany;
     
    @Entity
    public class Profil implements Serializable{
     
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private int CodeProfil;
        private String IntituleProfil;
     
        @OneToMany(fetch = FetchType.LAZY)
        private Set<Utilisateur> utilisateur = new HashSet<>();    
     
        // Constructeurs:
        public Profil() {
        }
     
        public Profil(String IntituleProfil) {
            this.IntituleProfil = IntituleProfil;
        }
     
     
        // Setters et Getters:
        public int getCodeProfil() {
            return CodeProfil;
        }
     
        public void setCodeProfil(int CodeProfil) {
            this.CodeProfil = CodeProfil;
        }
     
        public String getIntituleProfil() {
            return IntituleProfil;
        }
     
        public void setIntituleProfil(String IntituleProfil) {
            this.IntituleProfil = IntituleProfil;
        }
     
        public Set<Utilisateur> getUtilisateur() {
            return utilisateur;
        }
     
        public void setUtilisateur(Set<Utilisateur> utilisateur) {
            this.utilisateur = utilisateur;
        }
     
     
     
    }
    Et mon Converter: ProfilConverter.java:
    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
     
     
    package Converter;
     
    import Entités.Profil;
    import javax.faces.bean.ManagedBean;
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.convert.Converter;
    import javax.faces.convert.FacesConverter;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
     
    @ManagedBean
    @FacesConverter(value="profilConverter")
    public class ProfilConverter implements Converter {
     
       //  @PersistenceContext
       //  private transient EntityManager em;
     
        @Override
        public Object getAsObject(FacesContext context, UIComponent component, String value) {
           // return em.find(Profil.class, new Integer(value));
     
            Profil p = new Profil();
            p.setIntituleProfil(value);
            return p;
        }
     
        @Override
        public String getAsString(FacesContext context, UIComponent component, Object value) {
     
           /* Profil profil;
            profil = (Profil) value;
            return String.valueOf(profil.getIntituleProfil());*/ 
            return value.toString();
     
        }
     
    }
    et finalement une partie de ma page JSF:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
         <p:selectOneMenu id="list" value="#{utilisateurBean.utilisateur.profil}" converter="#{profilConverter}" required="true" >
                        <c:selectItem itemLabel="Select One" itemValue=""  />
                        <c:selectItems  value="#{utilisateurBean.listeIntituleProfil}" />
                        </p:selectOneMenu>
                        <p:spacer></p:spacer>
                        <p:commandButton value="Ajouter"  icon="ui-icon-check" action="#{utilisateurBean.ajouterUtilisateur()}" ajax="false"/>

    Je vous remercie d'avance pour votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Par défaut
    essayez avec ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <p:selectOneMenu value="#{utilisateurBean.utilisateur.profil}" converter="#{profilConverter}" >
    								<f:selectItem itemLabel="select one..." itemValue="" />
    								<f:selectItems value="#{utilisateurBean.listeIntituleProfil}" var="cat" itemValue="#{cat}" itemLabel="#{cat.IntituleProfil}"/>
    							</p:selectOneMenu>

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 44
    Par défaut
    Merci tout d'abord pour votre réponse
    Je l'ai essayé mais j'ai l'erreur suivante une fois je fais un run:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /AjoutUtilisateur.xhtml @45,151 itemLabel="#{cat.intituleProfil}": The class 'java.lang.String' does not have the property 'intituleProfil'.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Par défaut
    tu peux me montrer le bean de chaque class ?

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 44
    Par défaut
    D'accord, voila les entités et les beans:
    Entité Utilisateur.java:
    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
     
    package Entités;
     
    import java.io.Serializable;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
     
    @Entity
    public class Utilisateur implements Serializable{
     
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private int CodeUtilisateur;
        private String NomUtilisateur;
        private String PrenomUtilisateur;
        private String Login;
        private String Password;
        private String Email;
     
        @ManyToOne (fetch=FetchType.EAGER)
        @JoinColumn(name = "CodeProfil", nullable = false)
        private Profil profil;
     
     
        // Constructeurs:
        public Utilisateur() {
        }
     
        // Setters et Getters:
        public int getCodeUtilisateur() {
            return CodeUtilisateur;
        }
     
        public void setCodeUtilisateur(int CodeUtilisateur) {
            this.CodeUtilisateur = CodeUtilisateur;
        }
     
        public String getNomUtilisateur() {
            return NomUtilisateur;
        }
     
        public void setNomUtilisateur(String NomUtilisateur) {
            this.NomUtilisateur = NomUtilisateur;
        }
     
        public String getPrenomUtilisateur() {
            return PrenomUtilisateur;
        }
     
        public void setPrenomUtilisateur(String PrenomUtilisateur) {
            this.PrenomUtilisateur = PrenomUtilisateur;
        }
     
     
     
        public String getLogin() {
            return Login;
        }
     
        public void setLogin(String Login) {
            this.Login = Login;
        }
     
        public String getPassword() {
            return Password;
        }
     
        public void setPassword(String Password) {
            this.Password = Password;
        }
     
        public String getEmail() {
            return Email;
        }
     
        public void setEmail(String Email) {
            this.Email = Email;
        }
     
        public Profil getProfil() {
            return profil;
        }
     
        public void setProfil(Profil profil) {
            this.profil = profil;
        }
     
     
    }
    Bean Utilisateur.java:
    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
     
    package Beans;
     
    import Dao.ProfilDao;
    import Dao.UtilisateurDao;
    import Entités.Profil;
    import Entités.Utilisateur;
    import java.util.ArrayList;
    import java.util.List;
    import javax.annotation.PostConstruct;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
     
    @ManagedBean
    @SessionScoped
    public class UtilisateurBean {
     
        private Utilisateur utilisateur;
        private List<String> ListeIntituleProfil;
        private String selectedMenuItem;
     
        // Constructeurs:
        public UtilisateurBean() {
        }
     
        // Fonction d'initialisation du bean:
        @PostConstruct
        public void init()
        {
            if (utilisateur == null)
            {
                utilisateur = new Utilisateur();
            }
     
            ProfilDao p = new ProfilDao();
            ListeIntituleProfil = new ArrayList<>();
            ListeIntituleProfil = p.listeIntituleProfil();
     
        }
     
     
        // Setters et Getters:
        public Utilisateur getUtilisateur() {
            return utilisateur;
        }
     
        public void setUtilisateur(Utilisateur utilisateur) {
            this.utilisateur = utilisateur;
        }
     
        public List<String> getListeIntituleProfil() {
            return ListeIntituleProfil;
        }
     
        public void setListeIntituleProfil(List<String> ListeIntituleProfil) {
            this.ListeIntituleProfil = ListeIntituleProfil;
        }
     
        public String getSelectedMenuItem() {
            return selectedMenuItem;
        }
     
        public void setSelectedMenuItem(String selectedMenuItem) {
            this.selectedMenuItem = selectedMenuItem;
        }
     
     
     
     
         // Fonction qui ajoute un utiliateur à la BD:
        public String AjouterUtilisateur()
        {
            UtilisateurDao u = new UtilisateurDao();
            boolean resultat = u.AjoutUtilisateur(utilisateur);
     
            if(resultat==true)
            {
            return "succes";
            }
            else
            {
                return "echec";
            }
        }
     
     
        public String tester()
        {
            return "Test";
        }
     
    }
    Entité Profil.java:
    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
     
     
    package Entités;
     
    import java.io.Serializable;
    import java.util.HashSet;
    import java.util.Set;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.OneToMany;
     
    @Entity
    public class Profil implements Serializable{
     
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private int CodeProfil;
        private String IntituleProfil;
     
        @OneToMany(fetch = FetchType.LAZY)
        private Set<Utilisateur> utilisateur = new HashSet<>();    
     
        // Constructeurs:
        public Profil() {
        }
     
        public Profil(String IntituleProfil) {
            this.IntituleProfil = IntituleProfil;
        }
     
     
        // Setters et Getters:
        public int getCodeProfil() {
            return CodeProfil;
        }
     
        public void setCodeProfil(int CodeProfil) {
            this.CodeProfil = CodeProfil;
        }
     
        public String getIntituleProfil() {
            return IntituleProfil;
        }
     
        public void setIntituleProfil(String IntituleProfil) {
            this.IntituleProfil = IntituleProfil;
        }
     
        public Set<Utilisateur> getUtilisateur() {
            return utilisateur;
        }
     
        public void setUtilisateur(Set<Utilisateur> utilisateur) {
            this.utilisateur = utilisateur;
        }
     
     
     
    }
    Bean Profil.java:
    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
    72
    73
    74
    75
    76
    77
    78
     
     
    package Beans;
     
    import Dao.ProfilDao;
    import Entités.Profil;
    import java.util.List;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
     
     
    @ManagedBean
    @SessionScoped
    public class ProfilBean {
     
        private Profil profil;
        private List<String> ListeIntituleProfil;
     
        //Constructeur:
        public ProfilBean() {
            this.profil = new Profil();
        }
     
       // Setters et Getters:
        public Profil getProfil() {
            return profil;
        }
     
        public void setProfil(Profil profil) {
            this.profil = profil;
        }
     
        public List<String> getListeIntituleProfil() {
            return ListeIntituleProfil;
        }
     
        public void setListeIntituleProfil(List<String> ListeIntituleProfil) {
            this.ListeIntituleProfil = ListeIntituleProfil;
        }
     
     
     
        // Fonction qui ajoute un profil à la BD:
        public String AjouterProfil()
        {
            ProfilDao p = new ProfilDao();
            boolean résultat = p.AjouterProfilDao(profil);
     
            if(résultat==true)
            {
                System.out.println("Profil ajouté avec succès");
                return "succes";
            }
     
            else 
            {
                return "echec";
            }
        }
     
     
        // Fonction qui liste tout les profils existants dans la BD:
        public List<Profil> ListeProfil()
        {
           ProfilDao p = new ProfilDao();
           List<Profil> profils = p.listeTsProfils();
           return profils;
        }  
     
     
        //Fonction qui supprime un profil de la BD:
        public String SupprimerProfil(Profil p)
        {
            ProfilDao profil = new ProfilDao();
            profil.suppProfil(p);
            return "SupressionProfil";
        }
    }

  6. #6
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    Salut,

    tu as ecris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       private List<String> ListeIntituleProfil;
    L majuscule,
    mets le en minuscule, et donnes nous l´erreur.

    Eric

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Par défaut
    dans utilisateurBean remplacez ce ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     private List<String> ListeIntituleProfil;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     private List<Profil> ListeIntituleProfil;

    et changer les getter et setter qui lui correspond

Discussions similaires

  1. Réponses: 12
    Dernier message: 14/05/2015, 10h55
  2. Réponses: 0
    Dernier message: 27/11/2011, 18h50
  3. Problème de Date : Mappage hibernate Oracle
    Par le_misterioso dans le forum Hibernate
    Réponses: 0
    Dernier message: 15/06/2011, 11h45
  4. Converter JSF et Validator Hibernate Seam
    Par mastamx dans le forum JSF
    Réponses: 2
    Dernier message: 23/01/2009, 11h06
  5. Problème float entre hibernate et oracle
    Par dahno_fr dans le forum Hibernate
    Réponses: 2
    Dernier message: 08/07/2008, 10h19

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