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 de validation des selectOneMenu


Sujet :

Développement Web en Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Points : 13
    Points
    13
    Par défaut problème de validation des selectOneMenu
    Bonjour tous le monde

    je suis entrain de réaliser une application web avec JSF2.0 et Primefaces3.2.
    je rencontre un problème avec les SelectOneMenu lors de l'envoi de ma page ila me renvoie l'erreur suivant :
    j_idt6:type : erreur de validation. La valeur est incorrecte.
    j_idt6:logement : erreur de validation. La valeur est incorrecte.
    j_idt6:local : erreur de validation. La valeur est incorrecte.

    voici la page avis_fr.xhtml :
    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
                                    <h:selectOneMenu id="type" value="#{MBavis.avis.type}">
                                        <f:selectItems value="#{listes.list_type}" var="typpe" itemLabel="#{type}" itemValue="#{typpe}" />  
                                    </h:selectOneMenu> 
                                </div>
                                <div id="divComponent_fr">
                                    <p:inputTextarea id="objet" value="#{MBavis.avis.objet}" rows="2" maxlength="50" autoResize="false"/> 
                                </div>
                                <div id="divComponent_fr">
                                    <h:selectOneMenu id="logement" value="#{MBavis.avis.logement}" >
                                        <f:selectItems value="#{MBavis.liste.list_logement_fr}" />  
                                    </h:selectOneMenu>
                                </div>
     
                                <div id="divComponent_fr">
                                    <h:selectOneMenu id="local" value="#{MBavis.avis.localisation}">
                                        <f:selectItems value="#{MBavis.liste.list_localiastion_fr}"/>  
                                    </h:selectOneMenu> 
                                </div>

    voici la classe Litses :
    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
    public class Listes implements Serializable{
     
        private List<String> list_logement_fr = new ArrayList<String>();
        private List<String> list_localiastion_fr  = new ArrayList<String>();
     
        private List<String> list_type = new ArrayList<String>();
     
        public Listes() {
     
            this.list_logement_fr.add("appartement économique");
            this.list_logement_fr.add("Villa économique");
     
     
            this.list_localiastion_fr.add("locale1");
            this.list_localiastion_fr.add("locale2");
     
            this.list_type.add("dépot de candidature");
            this.list_type.add("autre service");
        }
     
        public List<String> getList_localiastion_ar() {
            return list_localiastion_ar;
        }
     
        public void setList_localiastion_ar(List<String> list_localiastion_ar) {
            this.list_localiastion_ar = list_localiastion_ar;
        }
     
        public List<String> getList_localiastion_fr() {
            return list_localiastion_fr;
        }
     
        public void setList_localiastion_fr(List<String> list_localiastion_fr) {
            this.list_localiastion_fr = list_localiastion_fr;
        }
     
        public List<String> getList_logement_ar() {
            return list_logement_ar;
        }
     
        public void setList_logement_ar(List<String> list_logement_ar) {
            this.list_logement_ar = list_logement_ar;
        }
     
        public List<String> getList_logement_fr() {
            return list_logement_fr;
        }
     
        public void setList_logement_fr(List<String> list_logement_fr) {
            this.list_logement_fr = list_logement_fr;
        }
     
        public List<String> getList_type() {
            return list_type;
        }
     
        public void setList_type(List<String> list_type) {
            this.list_type = list_type;
        }
    }
    voici mon ManagedBean MB_Avis:
    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
    @ManagedBean(name = "MBavis")
    @SessionScoped
    public class MB_Avis implements Serializable{
     
     
        private Avis avis;
        private Listes liste = new Listes();
     
        public MB_Avis() {
            this.avis = new Avis();
        }
     
        public Avis getAvis() {
            return avis;
        }
     
        public void setAvis(Avis avis) {
            this.avis = avis;
        }
     
        public Listes getListe() {
            return liste;
        }
     
        public void setListe(Listes liste) {
            this.liste = liste;
        }
    }
    mon Bean Avis:
    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
    public class Avis implements Serializable{
        private String type;
        private String objet;
        private String logement;
        private String localisation;
        private String texte1;
        private String texte2;
        private String texte3;
        private String url;
     
        public Avis() {
            this.type = "";
            this.objet = "";
            this.logement = "";
            this.localisation = "";
            this.texte1 = "";
            this.texte2 = "";
            this.texte3 = "";
            this.url = "";
        }
     
     
     
        public String getLocalisation() {
            return localisation;
        }
     
        public void setLocalisation(String localisation) {
            this.localisation = localisation;
        }
     
        public String getLogement() {
            return logement;
        }
     
        public void setLogement(String logement) {
            this.logement = logement;
        }
     
        public String getObjet() {
            return objet;
        }
     
        public void setObjet(String objet) {
            this.objet = objet;
        }
     
        public String getTexte1() {
            return texte1;
        }
     
        public void setTexte1(String texte1) {
            this.texte1 = texte1;
        }
     
        public String getTexte2() {
            return texte2;
        }
     
        public void setTexte2(String texte2) {
            this.texte2 = texte2;
        }
     
        public String getTexte3() {
            return texte3;
        }
     
        public void setTexte3(String texte3) {
            this.texte3 = texte3;
        }
     
        public String getType() {
            return type;
        }
     
        public void setType(String type) {
            this.type = type;
        }
     
        public String getUrl() {
            return url;
        }
     
        public void setUrl(String url) {
            this.url = url;
        }
    }
    Remarque : lorsque j’insère des dans mes listes des String sans caractère "é ou è" ça marche !

    J'ai des recherche depuis trois semaine sans résultat Merci d'avance pour votre aide.

  2. #2
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Salut,

    Ton problème est normal, peux tu transmettre ton faces-config ?

    Pour régler ton problème, il faut créer un bean dans lequel tu récupères tes valeurs ET tu en fais le traitement c'est plus simple, dans ton cas ce ne sera pas :

    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
     
    <managed-bean>
            <managed-bean-name>avis</managed-bean-name>
            <managed-bean-class>x.avisClasse</managed-bean-class>
            <managed-bean-scope>session</managed-bean-scope>
        </managed-bean>
     
        <managed-bean>
            <managed-bean-name>AvisControleur</managed-bean-name>
            <managed-bean-class>Controleurs.AvisControleur</managed-bean-class>
            <managed-bean-scope>session</managed-bean-scope>
            <managed-property>
                <property-name>avis</property-name>
                <property-class>x.avisClasse</property-class>
                <value>#{avis}</value>
            </managed-property>
        </managed-bean>
    et donc, ce ne sera pas :
    mais
    Suis-je assez clair ?

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Merci Fred30 pour votre réponse très rapide


    voici mon face-config :
    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
    <?xml version='1.0' encoding='UTF-8'?>
     
    <!-- =========== FULL CONFIGURATION FILE ================================== -->
     
    <faces-config version="2.0"
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
        <navigation-rule>
            <from-view-id>/index.xhtml</from-view-id>
            <navigation-case>
                <from-outcome>success</from-outcome>
                <to-view-id>/calander.xhtml</to-view-id>
            </navigation-case>
        </navigation-rule>
        <navigation-rule>
            <from-view-id>/avis_fr.xhtml</from-view-id>
            <navigation-case>
                <from-outcome>avis_fr</from-outcome>
                <to-view-id>/avisFR.xhtml</to-view-id>
            </navigation-case>
        </navigation-rule>
        <navigation-rule>
            <from-view-id>/calander.xhtml</from-view-id>
            <navigation-case>
                <from-outcome>valider_fr</from-outcome>
                <to-view-id>/avis_fr.xhtml</to-view-id>
            </navigation-case>
            <navigation-case>
                <from-outcome>valider_ar</from-outcome>
                <to-view-id>/avis_ar.xhtml</to-view-id>
            </navigation-case>
            <navigation-case>
                <from-outcome>valider_fr_ar</from-outcome>
                <to-view-id>/avis_fr_ar.xhtml</to-view-id>
            </navigation-case>
        </navigation-rule>
    </faces-config>

    en fait dans mon managedban "MB_Avis" contient un bean "avis" ou je récuprére les valeurs des selectOneMenu et d'autre composants :s
    pouvez vous m'aider avec un bout de code svp

  4. #4
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Alors le plus simple dans ton cas :

    Gardes ta classe avis telle qu'elle est et ajoutes dans le faces-config :

    <managed-bean>
    <managed-bean-name>avis</managed-bean-name>
    <managed-bean-class>'chemin de ta classe avis'</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>

    Puis crées une classe avisControleur (implement serializable aussi) et ajoutes dans ton faces-config :

    <managed-bean>
    <managed-bean-name>AvisControleur</managed-bean-name>
    <managed-bean-class>'chemin de ta classe avisControleur'</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    <managed-property>
    <property-name>avis</property-name>
    <property-class>'chemin de ta classe avis'</property-class>
    <value>#{avis}</value>
    </managed-property>
    </managed-bean>

    Dans ta classe avis controleur :

    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
     
    public class avisControleur implements Serializable {
     
    private String type;
        private String objet;
        private String logement;
        private String localisation;
        private String texte1;
        private String texte2;
        private String texte3;
        private String url;
     
    public avisControleur(){}
     
    Noublies pas les getters et setters des variables déclarées plus haut
    Et donc dans les values de tes selectOneMenu ce sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    value="#{avis. ...}"
    Voilà, je ne sais pas si c'est la meilleure méthode mais celle-ci fonctionne.

    N'hésites pas

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Bonosir Fred30 merci pour ton aide précieux

    on ce qui concerne :
    <managed-bean>
    <managed-bean-name>avis</managed-bean-name>
    <managed-bean-class>'chemin de ta classe avis'</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>

    j'utilise les annotations "@ManagedBean" au lieu d'ajouter ce code dans face-config


    si je comprend bien ton explication la classe AvisControleur va contenir les mêmes informations que la classe Avis

    dsl mais je vois comment ca peut aider !!

  6. #6
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    J'ai fait une erreur dans ce que j'ai dit désolé :

    Laisses ton faces-config comme je te l'ai dit et fait tout ton traitement dans la classe "avis".

    Voilà comment je m'organise :

    Package BDD :
    Contient toutes les classes dans laquelle il y les listes pour tes selectOneMenu

    Package DTO :
    Contient les classes dans lesquelles je déclare les valeurs avec getter et setter qui serviront à l'attribut value="" des SelectOneMenu, en gros les classes dans lesquelles tu récupères les choix fait par tes utilisateurs.

    Package Controleur :
    Celui dont je me sert le moins finalement, je fais que du traitement java

    Essaye dans ta page jsf d'ajouter un outputText et un commandButton pour voir si tu renvois les bonnes variables.

    C'est difficile à expliquer, j'ai commencé le JSF il y a 4 mois, et je commence à y voir clair depuis peu, j'ai utilité PrimeFaces aussi pour mon application.

    Si tu ne comprends toujours pas, ce soir je te ferais un post détaillé

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Bonjour Fred30

    désole pour mon retard mais je pense que j'ai besoin que vous fassiez un post détaillé
    je vous remercie infiniment

Discussions similaires

  1. [XL-2007] Problème de validation des données
    Par mobiclick dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 07/07/2009, 23h15
  2. Réponses: 1
    Dernier message: 25/01/2009, 19h08
  3. Réponses: 11
    Dernier message: 12/03/2008, 16h25
  4. Réponses: 1
    Dernier message: 14/02/2007, 08h14
  5. [débutante] problème de validation des méta-tags
    Par silversky dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/09/2005, 17h26

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