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

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 44
    Points : 17
    Points
    17
    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 régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Points : 117
    Points
    117
    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 à l'essai
    Femme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 44
    Points : 17
    Points
    17
    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 régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

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

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

    Informations forums :
    Inscription : Janvier 2014
    Messages : 44
    Points : 17
    Points
    17
    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 chevronné 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
    Points : 2 120
    Points
    2 120
    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 régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Points : 117
    Points
    117
    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

  8. #8
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    J'ai essayez avec le 'L' minuscule et j'ai changer List<Profil> mais l'erreur persiste toujours:
    j_idt5:j_idt18 : erreur de validation. La valeur est incorrecte.

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Points : 117
    Points
    117
    Par défaut
    Valeur non valide sur un <h: selectOneMenu> signifie simplement que la valeur sélectionnée ne correspond à aucune des options disponibles dans la liste. Peut-être le if() méthode dans le bean classe est cassée

  10. #10
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    J'ai essayé un autre converter mais je n'arrive toujours pas à récupérer la valeur sélectionnée comme étant Objet:
    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
     
    package Converter;
     
    import Entités.Profil;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.UUID;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.ViewScoped;
    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")
    @ViewScoped
    public class ProfilConverter implements Converter {
     
        private Map <UUID, Object> temporaryStore = new HashMap <UUID, Object> ();
     
     
        @Override
        public Object getAsObject(FacesContext context, UIComponent component, String value) {
     
     
            System.out.println( "UID choisi:    " + temporaryStore.get( UUID.fromString( value ) ) );
           return temporaryStore.get(UUID.fromString(value));  
     
        }
     
        @Override
        public String getAsString(FacesContext context, UIComponent component, Object value) {
     
            System.out.println("Objet: "+(value instanceof Profil));
            UUID id = UUID.randomUUID();
            temporaryStore.put(id, value);
            return id.toString();
           // return value.toString();
     
        }
     
    }
    le outprint de la méthode getAsObject m'affiche la valeur que j'ai sélectionnée (ici BO), et le outprint de la méthode getAsString m'affiche: Objet: false et normalement ça doit être ''true''.
    L'erreur que j'obtient est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.IllegalArgumentException: Cannot convert BO of type class java.lang.String to class Entités.Profil
    Une idée sur la solution s'il vous plait?

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Points : 117
    Points
    117
    Par défaut
    voila donc votre converter est mal traité

  12. #12
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    Et comment puis je résoudre ça svp?

  13. #13
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Points : 117
    Points
    117
    Par défaut
    je suis désolé car j'ai pas assez de temps pour récupérer ton code et le corrigé donc je viens de vous donnez un exemple de converter et le modifié selon votre besoin



    tout d'bord créer un class nommé Helperbean et ajouté cette methode selon votre besoin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    	public ListSwitchs findCategoryByName(String ip) {
    		return catalog.getByIp(ip) ;
    	}

    l'implementation de la methode getByIP () dans le service


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	@Override
    	public ListSwitchs getByIp(String ip) {
    		//return (ListSwitchs) entityManager.createQuery("SELECT t FROM ListSwitchs t WHERE t.ip_address =:nm").setParameter("nm", ip).getSingleResult();
    		ListSwitchs found = null;
    		Query query = entityManager.createQuery("select c from ListSwitchs c where c.ip_address=:x");
    		query.setParameter("x", ip);
    		try{
    			found = (ListSwitchs) query.getSingleResult();
    		}catch(Exception ex){
    			Logger.getLogger(this.getClass().getName()).log(Level.INFO, "no switch with ip="+ip);
    		}
    		return found;
    	}


    le converter

    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
     
    package sungard_web.converter;
     
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.convert.Converter;
    import javax.faces.convert.FacesConverter;
     
    import persistence.ListSwitchs;
    import sungard_web.mbeans.HelperBean;
     
     
     
     
    @FacesConverter("cc")
    public class ListSwitchConverter implements Converter{
     
     
     
    	public Object getAsObject(FacesContext context, UIComponent component, String value) {
    		ListSwitchs equivalentCategory = null;
    		if(!value.trim().equals("")){
    			HelperBean helper = context.getApplication().evaluateExpressionGet(context, "#{helperBean}", HelperBean.class);
    			equivalentCategory = helper.findCategoryByName(value);
    		}
    		return equivalentCategory;
    	}
     
    	public String getAsString(FacesContext context, UIComponent component, Object value) {
    		String equivalentString = null;
    		if(value == null || value.equals("")){
    			equivalentString = "";
    		}else{
    			equivalentString = ((ListSwitchs)value).getIp_address();
    		}
    		return equivalentString;
    	}
     
    }

    sachant que ListSwitch est un class et je veux afficher leurs ip_address dans selectMenu


    dans votre cas si je rappele bien ListSwitch = Profil

    et ipadress = IntituleProfil





    et si tu trouve un problème tu peux me contacter en privé cette nuit

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