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

Struts 1 Java Discussion :

Validation de formulaire


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 76
    Par défaut Validation de formulaire
    salut tout le monde, je m'adresse a votre sagesse et votre expérience.
    j'ai un problème de struts, sur un formulaire, il y a des champs à remplir.
    Pour ces champs, je fais une série de tests, et j'affiche les messages a côté en cas de non vérification des tests.
    le problème est qu'il y a deux champs {compte et nom_admin} qui ne se vérifie pas, et d'autres champs qui font n'importe quoi.
    Aussi, les messages d'erreurs pour les autres champs s'affichent dès le début sans que j'écris quoi que ce soit.

    voici le ActionForm
    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    public class AjouterAdminForm extends org.apache.struts.action.ActionForm {
     
       private String nom_admin;
       private String compte;
       private String add_mail;
       private String mot_de_passe;
       private String mot_de_passe_2;
     
     
       private String nom_admin_error;
       private String compte_error;
       private String add_mail_error;
       private String mot_de_passe_error;
       private String mot_de_passe_error2;
     
        public String getAdd_mail() {
            return add_mail;
        }
     
        public void setAdd_mail(String add_mail) {
            this.add_mail = add_mail;
        }
     
        public String getAdd_mail_error() {
            return add_mail_error;
        }
     
        public void setAdd_mail_error() {
            this.add_mail_error ="<span style='color:red'>Adresse mail non valide...</span>";
        }
     
        public String getCompte() {
            return compte;
        }
     
        public void setCompte(String compte) {
            this.compte = compte;
        }
     
        public String getCompte_error() {
            return compte_error;
        }
     
        public void setCompte_error() {
            this.compte_error = "<span style='color:red'>Le compte est vide...!</span>";
        }
     
        public void setCompte_error_2() {
            this.compte_error = "<span style='color:red'>Le compte est deja existant...!</span>";
        }
        public String getMot_de_passe() {
            return mot_de_passe;
        }
     
        public void setMot_de_passe(String mot_de_passe) {
            this.mot_de_passe = mot_de_passe;
        }
     
        public String getMot_de_passe_2() {
            return mot_de_passe_2;
        }
     
        public void setMot_de_passe_2(String mot_de_passe_2) {
            this.mot_de_passe_2 = mot_de_passe_2;
        }
     
        public String getMot_de_passe_error() {
            return mot_de_passe_error;
        }
     
        public void setMot_de_passe_error() {
            this.mot_de_passe_error = "Mot de passe trop court...";
        }
     
        public String getMot_de_passe_error2() {
            return mot_de_passe_error2;
        }
     
        public void setMot_de_passe_error2() {
            this.mot_de_passe_error2 = "<span style='color:red'>Mot de passe non identique...</span>";
        }
     
        public String getNom_admin() {
            return nom_admin;
        }
     
        public void setNom_admin(String nom_admin) {
            this.nom_admin = nom_admin;
        }
     
        public String getNom_admin_error() {
            return nom_admin_error;
        }
     
        public void setNom_admin_error() {
            this.nom_admin_error = "<span style='color:red'>Le Nom est vide...!</span>";
        }
     
       public AjouterAdminForm() {
           super();
           // TODO Auto-generated constructor stub
       }
     
       public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
           ActionErrors errors = new ActionErrors();
     
           return errors;
       }
    }
    et le Action

    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
            AjouterAdminForm formbean = (AjouterAdminForm) form;
            ListeAdmin l = new ListeAdmin();
     
            boolean stat = true;
     
            if (formbean.getCompte() == null) {
     
                formbean.setCompte_error();
                stat = false;
            }
            else
            {
                while(l.résultat.next())
                {
                    if (formbean.getCompte().equalsIgnoreCase(l.compte()))
                    {
                        formbean.setCompte_error_2();
                        stat=false;
                    }
                }
            }
            if (formbean.getNom_admin() == null) {
                formbean.setNom_admin_error();
                stat = false;
            }
            if (formbean.getMot_de_passe().length() < 4) {
                formbean.setMot_de_passe_error();
                stat = false;
            }
            if (!formbean.getMot_de_passe().equals(formbean.getMot_de_passe_2())) {
                formbean.setMot_de_passe_error2();
                stat = false;
            }
            if (!testEmail(formbean.getAdd_mail()))
            {   formbean.setAdd_mail_error();
                stat=false;
            }
            if (stat) {
                String req="INSERT INTO admin (nom_admin,compte,mot_de_passe,mail) VALUES (";
                req=req+"'"+formbean.getNom_admin()+"',";
                req=req+"'"+formbean.getCompte()+"',";
                req=req+"'"+formbean.getMot_de_passe()+"',";
                req=req+"'"+formbean.getAdd_mail()+"');";
                ConnexionBD con=new ConnexionBD();
                con.miseAJour(req);
                return mapping.findForward(SUCCESS);
            } else {
                return mapping.findForward(FAILLURE);
            }
        }
     
        public boolean testEmail(String email) {
            email = email.toLowerCase();
            String charOk = "abcdefghijklmnopqrstuvwxyz0123456789_@.";
            boolean test = false;
            if (email.length() < 8) {
                return false;
            }// Si l'email fait moins de 8 caractéres
     
            if (email.indexOf('@') < 0) {
                return false;
            }// Si l'email ne contient pas d'@'
     
            if (email.indexOf('.') < 0) {
                return false;
            }// Si l'email ne contient pas de '.'
     
            if (((email.indexOf('.', (((email.indexOf('@')) + 1))))) == (email.indexOf('@') + 1)) {
                return false;
            }// Si l'email as un '.' apres l'@
     
            if (((email.indexOf('.', (((email.indexOf('@')) - 1))))) == (email.indexOf('@') - 1)) {
                return false;
            }// Si l'email as un '.' avant l'@
     
            if ((email.indexOf('.')) == 0) {
                return false;
            }// Si l'email as un '.' au debut
     
            if ((email.charAt((email.length() - 1)) == '.')) {
                return false;
            }// Si l'email a un '.' a la fin
     
            if ((email.indexOf('@')) == 0) {
                return false;
            }// Si l'email as un '@' au debut
     
            if ((email.charAt((email.length() - 1)) == '@')) {
                return false;
            }// Si l'email a un '@' a la fin
            // Si l'email n'a pas de '.' un peu apres le '@'
     
            boolean tmp = false;
            for (int i = 1; i < (email.length() - (email.indexOf('@'))); i++) {
                if (email.charAt((email.indexOf('@')) + i) == '.') {
                    tmp = true;
                    i = (email.length());
                }
            }
            if (tmp == false) {
                return false;
            }
            // Si l'email a plusieurs '@'
            for (int i = 0; i < email.length(); i++) {
                if (email.charAt(i) == '@') {
                    for (int j = i + 1; j < email.length(); j++) {
                        if (email.charAt(j) == '@') {
                            return false;
                        }
                    }
                }
            }
            // Si l'email a 2 '.' d'affilé
            for (int i = 0; i < (email.length() - 1); i++) {
                if ((email.charAt(i) == '.') && (email.charAt(i + 1) == '.')) {
                    return false;
                }
            }
            // Si l'email contient un caractére interdis
            for (int i = 0; i < email.length(); i++) {
                for (int j = 0; j < charOk.length(); j++) {
                    if ((email.charAt(i)) == (charOk.charAt(j))) {
                        test = true;
                        j = (charOk.length());
                    } else {
                        test = false;
                    }
                }
                if (test == false) {
                    return test;
                }
            }
            return test;
        }
    }
    merci d'avance

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    C'est une mauvaise façon de gérer la validation des formulaires. En Struts, il existe des techniques de validation, il faut les utiliser. Il y a des articles en traitant dans la FAQ
    Dans ton cas, si tu n'utilises pas déjà le validator, intéresses toi à La méthode validate() des ActionForms.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 31
    Par défaut
    Oulala c'est un peu la prise de tête ta validation d'adresse mail

    Utilises une expression régulière plutôt... La mienne est assez large mais tu peux l'adapter à tes besoins en changeant le Pattern.

    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
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    public class EMail {
     
    	/**
             * Verifie que la chaine passée en paramètre correspond à une adresse mail valide.
             * 
             * @param email la chaine a tester
             * @return      true  si <code>email</code> est valide
             * <br>                 false sinon
             */
    	public final static boolean isValidEmail(final String email) {
     
    		int nombreDeResultats = 0;
     
    		if(null!=email) {
    			final Pattern p = Pattern.compile("[\\w%-]+(\\.[\\w%-]+)*@[\\w%-]+(\\.[\\w%-]+)*\\.[\\w%-]{2,4}");
    			final Matcher m = p.matcher(email);
     
    			while(m.find()) {
    				if(m.group().equals(email)) {
    					nombreDeResultats++;	
    				}
    			}			
    		}
     
    		return (nombreDeResultats==1) ? true : false;
    	}
     
     
     
    	public static void main(String[] args) {
    		String test = "surnom@domaine.com";
    		System.out.println(isValidEmail(test) + "\t" + test);
     
    		test = "prenom.nom@domaine.com";
    		System.out.println(isValidEmail(test) + "\t" + test);
     
    		test = "prenom-nom@domaine.com";
    		System.out.println(isValidEmail(test) + "\t" + test);
     
    		test = "prenom_nom@domaine.com";
    		System.out.println(isValidEmail(test) + "\t" + test);
     
    		test = "prenom-compose.nom-compose@domaine-compose.com";
    		System.out.println(isValidEmail(test) + "\t" + test);
     
    		test = "prenom.nom.999@domaine.com";
    		System.out.println(isValidEmail(test) + "\t" + test);
     
    		test = null;
    		System.out.println(isValidEmail(test) + "\t" + test);
     
    		test = "test!bidon@domaine.com";
    		System.out.println(isValidEmail(test) + "\t" + test);
    	}
     
    }
    Ça allègera un peu ton code

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 76
    Par défaut
    merci pour ta reponse.
    en fait, j'utilise souvent le validate mais l'interet de cette methode est qu'elle permet d'afficher les erreur devant chaque champs. par contre l'autre méthode rassemble toutes les erreurs dans le html:errors.
    je vais quand même lire les FAQs pour s'élargir un peu.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Heu, je me rappelle plus bien mais les balises <html:error> (sans "s") ne permettent-elles pas de placer un message pour chaque champ ?

    Ah, et conseil : mets ce genre de post dans la rubrique Struts ou Dev Web Java, je ne suis pas sûr qu'il sera plus visible, tout ce que je sais c'est que le forum en sera mieux organisé, et que moi je fréquente essentiellement les rubriques Web Java.

  6. #6
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Citation Envoyé par mixouille Voir le message
    Heu, je me rappelle plus bien mais les balises <html:error> (sans "s") ne permettent-elles pas de placer un message pour chaque champ ?
    Alors non, il me semble pas qu'il y ait une <html:error> mais bien seulement <html:errors>
    Par contre, <html:errors> génére un affichage globale si on l'utilise sans attribut, ou alors avoir un affichage "au détail" en renseignant dans l'attribut property (ou name, je me souviens plus) le nom de l'erreur.
    Tu as en plus moyen au travers d'attributs comme errorKey,errorStyle,errorStyleClass,errorStyleId de décorer le(s) champs de ton formulaire qui pose problème lors de la validation.
    J'ai par contre pas d'exemple d'utilisation à te fournir sous la main

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 76
    Par défaut
    normalement dans le ActionForm, la methode validate retourne errors.
    alors comment je peux différencier ?
    sauf si je déclare plusieurs actionsErrors, et a chaque fois je retourne l'erreur qui me convient. est-ce possible ?
    Dans tout les cas, je vais l'essayer et je vous tiendrais au courant.

    et pour déplacer le sujet, je ne sais pas comment faire.Si un modérateur veut le faire, c'est sans problème.

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Inutile de le déplacer, c'était un conseil général.

    En effet, pas de <html:error>, c'est bien la balise <html:errors> que j'utilisais, avec l'attribut "property" pour préciser la propriété contrôlée.

    Et, dans ton validate(), tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    actionErrors.add("taPropriete", actionMessage)
    pour ajouter ton erreur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. validation du formulaire de la page ouvrante d'un popup
    Par noa dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/08/2005, 12h11
  2. Réponses: 5
    Dernier message: 24/05/2005, 11h21
  3. Valider un formulaire contenu dans une iframe
    Par snoopy5.0 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/04/2005, 11h14
  4. Valider un formulaire par une image
    Par Fleep dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 31/10/2004, 01h50
  5. [Struts]Validation de formulaire
    Par djoukit dans le forum Struts 1
    Réponses: 4
    Dernier message: 12/03/2004, 09h12

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