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

Développement Web en Java Discussion :

Problème avec un selectOneMenu, Java Server Faces, erreur de validation !


Sujet :

Développement Web en Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mai 2003
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Problème avec un selectOneMenu, Java Server Faces, erreur de validation !
    Bonjour à tous !

    Suite à une erreur de validation que je n'arrive pas à régler depuis trois jours, je me résigne à vous demander de l'aide:
    Je récupère une liste d'utilisateurs dans une base de données...j'affiche dans le selectOneMenu les logins des utilisateurs présents dans la base...impossible d'avancer à cause d'une erreur de validation du style:
    "formulaire_listeUtilisateurs:username : erreur de validation. La valeur est incorrecte. "

    Mon selectOneMenu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <h:selectOneMenu id="username"  value="#{utilisateursManager.utilisateurSelectionne}"  converter="#{utilisateurConverter}" validator="utilisateurValidator">
                            <f:selectItem itemLabel="#{msg['index.selectionne']}" />
                            <f:selectItems value="#{utilisateursManager.donneUtilisateurs}"
                                var="utilisateur" itemLabel="#{utilisateur.login}" itemValue="#{utilisateur}" />
                        </h:selectOneMenu>
    Mon bean managé:

    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
     
    @ManagedBean(name="utilisateursManager")
    @SessionScoped
    public class UserManagedbean implements Serializable {
     
        private static final long serialVersionUID = 1L;
        /**
         * Injection de nos EJB (Session Bean Stateless)
         */
        @EJB
        private UtilisateurDao dao;
     
        // List<Information> pays;
        private List<Utilisateur> listeUtilisateurs;
        private Utilisateur utilisateurSelectionne;
     
        public List<Utilisateur> getListeUtilisateurs() {
     
            return listeUtilisateurs;
        }
        public void setlisteUtilisateurs(List<Utilisateur> liste) {
            this.listeUtilisateurs = liste;
        }
     
        public Utilisateur getUtilisateurSelectionne() {
            return utilisateurSelectionne;
        }
        public void setUtilisateurSelectionne(Utilisateur utilisateur) {
            this.utilisateurSelectionne = utilisateur;
        }
     
        //remplissage de la liste derroulante
        public List<Utilisateur> getDonneUtilisateurs(){
     
    System.out.println("Fonction getDonneUtilisateurs");        
            listeUtilisateurs = dao.trouver();
    //        this.utilisateurSelectionne = (Utilisateur) listeUtilisateurs.get(1);
            return listeUtilisateurs;
        }
     
        //remplissage de la liste derroulante
        public String verifierMotDePasse(){
     
            return "acceuil.xhtml";
        }
     
    }
    Mon "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
     
    @ManagedBean
    @SessionScoped
    public class UtilisateurConverter implements Converter, Serializable {
     
     
        private static final long serialVersionUID = 1L;    
     
        @Override
        public Object getAsObject(FacesContext context, UIComponent component,
                String value) {
     
            UserManagedbean bean = (UserManagedbean) ((HttpSession)context.getExternalContext().getSession(true)).getAttribute("utilisateursManager");
            List<Utilisateur> userList = bean.getDonneUtilisateurs();
            for(int i=0; i<userList.size(); i++) {
                Utilisateur user = userList.get(i);
                if(user.getLogin().equals(value)) {
    System.out.println("DANSCONVERTEROBJECT trouve user:" + user.getLogin());
                    return user;
                }
            }
            return null;
     
        }
     
        @Override
        public String getAsString(FacesContext context, UIComponent component,
                Object value) {
     
    System.out.println("DANSCONVERTERSTRING");
            if (value==null){
    System.out.println("DANSCONVERTERSTRING value=null, return null:");
                return null;
            } else {
            Utilisateur user = (Utilisateur) value;
            return user.getLogin() != null ? user.getLogin() : null;
            }
        }
    }
    D'après ce que je comprends, le "validator" vérifie que j'ai bien sélectionné dans la liste un bon utilisateur, donc un utilisateur qui existe dans la liste des utilisateurs de mon bean managé...pour cela, le "itemValue" de mon menu pointe bien vers un "Utilisateur"...qui est comparé à un de la liste du bean...Mais, vu mes explications, il y a un truc que je ne dois pas comprendre...Désolé...

    Merci par avance

    Sébastien

  2. #2
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mai 2003
    Messages : 12
    Points : 9
    Points
    9
    Par défaut première piste...
    En ajoutant l'instruction immediate="true" à mon "commandButton", je saute la phase de validation/conversion...C'est pas une solution très jolie, mais çà permet de continuer !

Discussions similaires

  1. Problème avec les curseurs SQL SERVER
    Par stefostillrise dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/11/2005, 13h09
  2. [ODBC] Problème avec odbc et sql server 2005
    Par scaleo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/10/2005, 09h49
  3. [SQL Server]Problème avec l'authentification SQL SERVER
    Par tidou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/04/2005, 15h40

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