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

Servlets/JSP Java Discussion :

Contrôler saisie formulaire


Sujet :

Servlets/JSP Java

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut Contrôler saisie formulaire
    Bonjour,

    Je réalise une application en Java J2ee et je souhaite contrôler que mes champs sont bien rempli.
    Pour cela, j'a créé différentes méthodes dans mon controlleur:
    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
    public class LoginServlet extends HttpServlet
    {
    	private static final long serialVersionUID = 3239007136416961422L;
        private boolean erreur = false;
        private String message = "";
     
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.getRequestDispatcher("/Vue/JSP/login.jsp").forward(request, response);
        }
     
        /* Traitement des données du formulaire */
        public void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
     
        	String resultat;
     
        	/* Récupération des champs du formulaire. */
        	String nom = request.getParameter("nom");
        	String prenom = request.getParameter("prenom");
        	String email = request.getParameter("email");
        	String telephone = request.getParameter("telephone");
     
            request.setAttribute("erreurNom", validationNom(nom));
            request.setAttribute("erreurPrenom", validationPrenom(prenom));
            request.setAttribute("erreurTelephone", validationTelephone(telephone));
            request.setAttribute("erreurMail", validationEmail(email));    	
     
        	if(erreur ==  true){
        		resultat = "Votre formulaire a correctement été traité !";
        	}else{
        		resultat = "Il manque des éléments non transmis";
        	}
     
        	/* Stockage du résultat et des messages d'erreurs */
        	request.setAttribute("erreurs", resultat);
        	request.setAttribute("correcte", resultat);
     
            if (erreur ==  false) {
                /* Si aucune erreur, alors affichage de la fiche récapitulative */
                response.sendRedirect("accueil");        
            } else {
                /* Sinon, ré-affichage du formulaire de création avec les erreurs */
                response.sendRedirect("login");        
            }
        }
     
        /* Valide l'adresse mail saisie. */
        private String validationEmail(String email) {
    	    if (email != null && email.trim().length() != 0) {
    	        if (!email.matches( "([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)" ) ) {
                    erreur = true;
                    message = "Merci de saisir une adresse mail valide.";
    	        }
    	    } else {
                erreur = true;
                message =  "Merci de saisir une adresse mail.";
    	    }
            return message;
    	}
     
    	/** Valide du nom. */
    	private String validationNom(String nom) {
    	    if (nom == null) {
                erreur = true;
                message = "Le nom doit être renseigné.";
    	    }
            return message;
    	}
     
    	/** Valide du prenom. */
    	private String validationPrenom(String prenom) {
    	    if (prenom == null) {
                erreur = true;
                message =  "Le prénom doit être renseigné.";
    	    }
            return message;
    	}
     
    	/** Valide du telephone. */
    	private String validationTelephone(String telephone) {
    	    if (telephone == null) {
                erreur = true;
                message = "Le téléphone doit être renseigné.";
    	    }
            return message;
    	}
    }
    Mon problème est que je n'arrive pas à afficher mes erreurs sur ma jsp et aussi à réafficher dans le champ la valeur saisie:
    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
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@ page errorPage="erreur.jsp"%>
    <!DOCTYPE html>
    <html lang="en">
      <head>
     
        <meta charset="utf-8">
        <title>Application connexion</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="">
        <meta name="author" content="">
     
        <!-- Le styles -->
        <link href="bootstrap/css/bootstrap.css" rel="stylesheet">
        <link href="bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
      </head>
     
      <body>
     
        <div class="container">
     
          <form class="form-signin" Action="login" Method=Post>
            <h2 class="form-signin-heading">Demande</h2>
            <input type="text" class="input-block-level" name="nom" placeholder="Nom"/>
     
            <input type="text" class="input-block-level" name="prenom" placeholder="Prenom"/>
     
            <input type="text" class="input-block-level" name="telephone" placeholder="T&eacute;l&eacute;phone"/>
     
            <input type="text" class="input-block-level" name="email" placeholder="Email address"/>
     
            <input type="password" class="input-block-level" name="password" placeholder="Password"/>
     
            <label class="checkbox">
              <input type="checkbox" value="remember-me"> Remember me
            </label>
     
            <button class="btn btn-large btn-primary" type="submit" value="Traiter">Traiter</button>
            <button class="btn btn-large btn-primary" type="Reset" value="Effacer">Effacer</button>
          </form>
     
        </div> <!-- /container -->
      </body>
    </html>
    Merci de votre aide

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut
    Citation Envoyé par totot Voir le message
    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
        private boolean erreur = false;
      	if(erreur ==  true){
        		resultat = "Votre formulaire a correctement été traité !";
        	}else{
        		resultat = "Il manque des éléments non transmis";
        	}
    
        	/* Stockage du résultat et des messages d'erreurs */
    Pour commencer request.setAttribute("erreurs", resultat); = request.setAttribute("correcte", resultat);
    
    /*Ensuite pour moi le teste ci dessous n'a pas sa raison d'être sinon
    ça serai un double travail à l'exécution voire un dysfonctionnement puisque ta variable 
    est booléenne donc si elle n'est pas égale à true 
    elle est forcement false vice-versa.Raison de plus le
     IF dudit teste correspond au ELSE 
    du 1er teste et son ELSE au IF du 1er*/
            if (erreur ==  false) {
                /* Si aucune erreur, alors affichage de la fiche récapitulative */
                response.sendRedirect("accueil");        
            } else {
                /* Sinon, ré-affichage du formulaire de création avec les erreurs */
                response.sendRedirect("login");        
            }
    Je pense qu'il serai mieux d'avoir un truc comme ça :

    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
    /*si tout est bon tu initialises la variable resultat  avec le bon message 
    ensuite tu la mets dans une portée requête et enfin tu rediriges vers la page récapitulative*/
    
    if(erreur ==  true){
        		resultat = "Votre formulaire a correctement été traité !";
                    request.setAttribute("erreurs", resultat);
                   response.sendRedirect("accueil");       
        	}
    /*Sinon tu initialise la variable resultat  avec le message d'erreur ensuite tu la mets dans une portée requête et enfin tu ré-affiches ton formulaire*/
    
    else{
        		resultat = "Il manque des éléments non transmis";
                    request.setAttribute("erreurs", resultat);
                    response.sendRedirect("login");        
    
        	}
    Et tes méthodes aussi on dirait qu'elles jouent le même rôle :
    Citation Envoyé par totot Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private String validationEmail(String email) {
     
    return message;//pareil pour toutes les autres.Or,si j'ai bien compris ce que tu veux faire ces méthodes sont là juste pour valider les champs.Si tel est le cas revois les.
    	}
    Si tu veux en cas d'erreur ré-afficher les infos entrer,tu dois les stocker dans ton bean.C'est ce dernier qui te permettra de les afficher dans ta JSP.
    Pour le message d'erreur tu crées une MAP qui doit avoir comme clé le champ et comme valeur tu utilise la méthode getMessage() voir la gestion des exceptions.
    Bref,mon frère je ne voulais pas t'écrire le code mais je dirai que tu es loin d'être proche de parvenir fouilles encore.

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Voilà, j'ai refait un peut ma servlet
    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
    public class LoginServlet extends HttpServlet
    {
    	private static final long serialVersionUID = 3239007136416961422L;
        private boolean erreur = false;
        private String message = "";
     
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.getRequestDispatcher("/Vue/JSP/login.jsp").forward(request, response);
        }
     
        /* Traitement des données du formulaire */
        public void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
     
        	String resultat;
     
        	/* Récupération des champs du formulaire. */
        	String nom = request.getParameter("nom");
        	String prenom = request.getParameter("prenom");
        	String email = request.getParameter("email");
        	String telephone = request.getParameter("telephone");
     
            request.setAttribute("erreurNom", validationNom(nom));
            request.setAttribute("erreurPrenom", validationPrenom(prenom));
            request.setAttribute("erreurTelephone", validationTelephone(telephone));
            request.setAttribute("erreurMail", validationEmail(email));    	
     
            if (erreur ==  false) {
                /* Si aucune erreur, alors affichage de la fiche récapitulative */
                resultat = "Votre formulaire a correctement été traité !";
                request.setAttribute("correcte", resultat);
                response.sendRedirect("accueil");        
            } else {
                /* Sinon, ré-affichage du formulaire de création avec les erreurs */
                resultat = "Il manque des éléments non transmis";
                request.setAttribute("erreurs", resultat);
                response.sendRedirect("login");        
            }
        }
     
        /* Valide l'adresse mail saisie. */
        private String validationEmail(String email) {
    	    if (email != null && email.trim().length() != 0) {
    	        if (!email.matches( "([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)" ) ) {
                    erreur = true;
                    message = "Merci de saisir une adresse mail valide.";
    	        }
    	    } else {
                erreur = true;
                message =  "Merci de saisir une adresse mail.";
    	    }
            return message;
    	}
     
    	/** Valide du nom. */
    	private String validationNom(String nom) {
    	    if (nom == null) {
                erreur = true;
                message = "Le nom doit être renseigné.";
    	    }
            return message;
    	}
     
    	/** Valide du prenom. */
    	private String validationPrenom(String prenom) {
    	    if (prenom == null) {
                erreur = true;
                message =  "Le prénom doit être renseigné.";
    	    }
            return message;
    	}
     
    	/** Valide du telephone. */
    	private String validationTelephone(String telephone) {
    	    if (telephone == null) {
                erreur = true;
                message = "Le téléphone doit être renseigné.";
    	    }
            return message;
    	}
    }
    et ma JSP:
    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
    <html lang="en">
      <head>
     
        <meta charset="utf-8">
        <title>Application connexion</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="">
        <meta name="author" content="">
     
        <!-- Le styles -->
        <link href="bootstrap/css/bootstrap.css" rel="stylesheet">
        <style type="text/css">
          body {
          form.erreur {
            color: #900;
          }
        </style>
        <link href="bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
      </head>
     
      <body>
     
        <div class="container">
     
          <form class="form-signin" Action="login" Method=Post>
            <h2 class="form-signin-heading">Demande</h2>
            <%= request.getAttribute("erreurs") %>
            <input type="text" class="input-block-level" name="nom" placeholder="Nom"/><span class="erreur"><%= request.getAttribute("erreurNom") %></span>
     
            <input type="text" class="input-block-level" name="prenom" placeholder="Prenom"/><span class="erreur"><%= request.getAttribute("erreurPrenom") %></span>
     
            <input type="text" class="input-block-level" name="telephone" placeholder="T&eacute;l&eacute;phone"/><span class="erreur"><%= request.getAttribute("erreurTelephone") %></span>
     
            <input type="text" class="input-block-level" name="email" placeholder="Email address"/><span class="erreur"><%= request.getAttribute("erreurMail") %></span>
     
            <input type="password" class="input-block-level" name="password" placeholder="Password"/>
     
            <label class="checkbox">
              <input type="checkbox" value="remember-me"> Remember me
            </label>
     
            <button class="btn btn-large btn-primary" type="submit" value="Traiter">Traiter</button>
            <button class="btn btn-large btn-primary" type="Reset" value="Effacer">Effacer</button>
          </form>
     
        </div> <!-- /container -->
      </body>
    </html>
    Et voilà ce que cela me donne quand je lance mon formulaire et quand je l'envoie avec des erreurs, les erreurs ne s'affiche pas non plus:
    Images attachées Images attachées  

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut
    Citation Envoyé par totot Voir le message

    /* Récupération des champs du formulaire. */
    String nom = request.getParameter("nom");
    String prenom = request.getParameter("prenom");
    String email = request.getParameter("email");
    String telephone = request.getParameter("telephone");

    request.setAttribute("erreurNom", validationNom(nom));//Ici tu stockes la méthode qui est censée retournée le message et non la valeur récupérée.
    request.setAttribute("erreurPrenom", validationPrenom(prenom));//idem ici
    request.setAttribute("erreurTelephone", validationTelephone(telephone));//idem ici
    request.setAttribute("erreurMail", validationEmail(email));//idem ici

    if (erreur == false) {
    /* Si aucune erreur, alors affichage de la fiche récapitulative */
    resultat = "Votre formulaire a correctement été traité !";
    request.setAttribute("correcte", resultat);
    response.sendRedirect("accueil");
    } else {
    /* Sinon, ré-affichage du formulaire de création avec les erreurs */
    resultat = "Il manque des éléments non transmis";
    request.setAttribute("erreurs", resultat);//Le nom de ton objet requête doit être le même que celui du if.
    response.sendRedirect("login");
    }
    }
    Pour les méthodes,aucune amélioration donc aucune aussi pour les messages d'erreur.

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Si je peux me permettre, tu devrais opter pour le paradigme MVC, même si tu n'utilises pas un framework, c'est toujours une bonne manière de faire.
    Donc, tu devrais avoir :
    - un Bean qui représente les données de ta page
    - une page JSP qui affiche ce bean
    - une servlet qui sert de contrôleur/routeur de tes requêtes

    Voici un exemple rapide

    Le bean (Modèle)
    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
    package test.mvc;
     
    import java.io.Serializable;
     
    public class PersonBean implements Serializable
    {
        private static final long serialVersionUID = 1;
        private String nom;
        private String erreurNom;
        private String prenom;
        private String erreurPrenom;
        private String adresse;
        private String codePostal;
        private String ville;
     
        public PersonBean()
        {
            super();
        }
     
        public String getNom()
        {
            return nom == null ? "" : nom;
        }
     
        public void setNom(String nom)
        {
            this.nom = nom;
        }
     
        public String getErreurNom()
        {
            return erreurNom == null ? "" : erreurNom;
        }
     
        public void setErreurNom(String erreurNom)
        {
            this.erreurNom = erreurNom;
        }
     
        public String getPrenom()
        {
            return prenom == null ? "" : prenom;
        }
     
        public void setPrenom(String prenom)
        {
            this.prenom = prenom;
        }
     
        public String getErreurPrenom()
        {
            return erreurPrenom == null ? "" : erreurPrenom;
        }
     
        public void setErreurPrenom(String erreurPrenom)
        {
            this.erreurPrenom = erreurPrenom;
        }
     
        public String getAdresse()
        {
            return adresse == null ? "" : adresse;
        }
     
        public void setAdresse(String adresse)
        {
            this.adresse = adresse;
        }
     
        public String getCodePostal()
        {
            return codePostal == null ? "" : codePostal;
        }
     
        public void setCodePostal(String codePostal)
        {
            this.codePostal = codePostal;
        }
     
        public String getVille()
        {
            return ville == null ? "" : ville;
        }
     
        public void setVille(String ville)
        {
            this.ville = ville;
        }
    }
    La servlet (Contrôleur)
    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
    package test.mvc;
     
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    @WebServlet(urlPatterns="/personServlet")
    public class PersonServlet extends HttpServlet
    {
        private static final long serialVersionUID = 1;
     
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
            boolean newBean = false;
            boolean error = false;
     
            // Recherche du bean dans le scope session
            PersonBean bean = (PersonBean)request.getSession().getAttribute("PersonBean");
            if (bean == null)
            {
                newBean = true;
                bean = new PersonBean();
                request.getSession().setAttribute("PersonBean", bean);
            }
     
            getRequestParameter(request, response, bean);
     
            if (!newBean)
            {
                error = checkRequestParameter(request, response, bean);
            }
     
            if (error)
            {
                // Là on a des erreurs
            }
            request.getRequestDispatcher("/person/person.jsp").forward(request, response);
        }
     
        /**
         * Récupération des paramètres de la requête
         * @param request
         * @param response
         * @param bean
         */
        public void getRequestParameter(HttpServletRequest request, HttpServletResponse response, PersonBean bean)
        {
            String value = null;
     
            // Récupération nom
            value = request.getParameter("nom");
            bean.setNom(value);
     
            // Récupération prenom
            value = request.getParameter("prenom");
            bean.setPrenom(value);
     
            // Récupération adresse
            value = request.getParameter("adresse");
            bean.setAdresse(value);
     
            // Récupération codePostal
            value = request.getParameter("codePostal");
            bean.setCodePostal(value);
     
            // Récupération ville
            value = request.getParameter("ville");
            bean.setVille(value);
        }
     
        /**
         * Contrôle des données
         * @param request
         * @param response
         * @param bean
         * @return
         */
        public boolean checkRequestParameter(HttpServletRequest request, HttpServletResponse response, PersonBean bean)
        {
            boolean error = false;
     
            bean.setErreurNom(null);
            bean.setErreurPrenom(null);
     
            // Contrôle nom
            if (bean.getNom().trim().length() == 0)
            {
                error = true;
                bean.setErreurNom("Le nom de la personne est obligatoire");
            }
     
            // Contrôle prénom
            if (bean.getPrenom().trim().length() == 0)
            {
                error = true;
                bean.setErreurPrenom("Le prénom de la personne est obligatoire");
            }
     
            return error;
        }
    }
    La page (Vue)
    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
    <html>
     
    <body>
    <head>
    <style>
    .error{
        color:red;
    }
    </style>
    </head>
     
    <jsp:useBean id="PersonBean" class="test.mvc.PersonBean" scope="session"/>
     
    <form action="<%=request.getContextPath()%>/personServlet" method="post" enctype="application/x-www-form-urlencoded">
        <table>
            <tr>
                <td>Nom</td>
                <td>
                    <input type="text" name="nom" value="<%=PersonBean.getNom()%>"/>
                </td>
                <td class="error">
                    <%=PersonBean.getErreurNom() %>
                </td>
            </tr>
            <tr>
                <td>Prénom</td>
                <td>
                    <input type="text" name="prenom" value="<%=PersonBean.getPrenom()%>"/>
                </td>
                <td class="error">
                    <%=PersonBean.getErreurPrenom() %>
                </td>
            </tr>
        </table>
     
        <input type="submit" value="Enregistrer"/>
    </form>
     
    </body>
    </html>

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 145
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    écrire tout le code comme ça dans ta servlet c'est mal,et du coup c'est difficile de se repérer. Mais bon je suppose que pour l'instant tu sais pas encore faire autrement. Moi à ta place je créerai un setter pour la variable erreur et dans tes méthodes de validations je modifierai erreur via ce setter. A mon avis ta variable erreur est toujours à "true" et donc normal que tu es pas tes fameux messages d'erreurs.

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Je vais regarder tous cela. Mais on est bien d'accord que le contrôle des champs pour savoir s'ils sont rempli ou vide se fait bien dans la servlet et non dans la JSP?

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 145
    Points : 62
    Points
    62
    Par défaut
    Dans l'absolue il faudrait le faire dans un classe java mais sinon vu que tu codes tout dans la servlet oui il faudrait le faire là.

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par totot Voir le message
    Je vais regarder tous cela. Mais on est bien d'accord que le contrôle des champs pour savoir s'ils sont rempli ou vide se fait bien dans la servlet et non dans la JSP?
    Ça pourrait se faire sur le poste client avec du javascript également (donc au travers de la JSP), ça éviterait de soumettre un formulaire en sachant que le contrôle échouera. Maintenant, quand les contrôles seront un peu plus poussés, dans tous les cas il faudra faire un contrôle côté serveur...

  10. #10
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Voilà ce que j'ai fais:

    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
    package Controller;
     
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    public class LoginServlet extends HttpServlet
    {
    	private static final long serialVersionUID = 3239007136416961422L;
        private int nbErreur;
     
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.getRequestDispatcher("/Vue/JSP/login.jsp").forward(request, response);
        }
     
        /* Traitement des données du formulaire */
        public void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        	nbErreur = 0;
     
            /* Récupération des champs du formulaire. */
        	String nom = request.getParameter("nom");
        	String prenom = request.getParameter("prenom");
        	String email = request.getParameter("email");
        	String telephone = request.getParameter("telephone");
     
            String erreurNom = validationNom(nom);
            String erreurPrenom = validationPrenom(prenom);
            String erreurTelephone = validationTelephone(telephone);
            String erreurMail = validationEmail(email);
     
            if (nbErreur > 0) {
                /* S'il y a des erreurs, ré-affichage du formulaire de création avec les erreurs */
                request.setAttribute("erreurNom", erreurNom);
                request.setAttribute("erreurPrenom", erreurPrenom);
                request.setAttribute("erreurTelephone", erreurTelephone);
                request.setAttribute("erreurMail", erreurMail);
     
                request.setAttribute("erreurs", "Il manque des éléments non transmis");
                //response.sendRedirect("login");
                getServletContext().getRequestDispatcher("/Vue/JSP/login.jsp").forward(request, response);
            }else{
                /* Sinon affichage de la fiche récapitulative */
                request.getSession().setAttribute("nomUtilisateur",nom);
                request.getSession().setAttribute("prenomUtilisateur",prenom);
                request.getSession().setAttribute("emailUtilisateur",email);
                request.getSession().setAttribute("telephoneUtilisateur",telephone);
     
                request.setAttribute("correcte", "Votre formulaire a correctement été traité !");
                response.sendRedirect("accueil");        
            }
        }
     
        /* Valide l'adresse mail saisie. */
        private String validationEmail(String email) {
            String message = "";
    	    if (email.equals("")) {
                nbErreur = nbErreur + 1;
                message = "Merci de saisir une adresse mail.";
    	    }
            return message;
    	}
     
    	/** Valide du nom. */
    	private String validationNom(String nom) {
            String message = "";
    	    if (nom.equals("")) {
                nbErreur = nbErreur + 1;
                message = "Le nom doit être renseigné.";
    	    }
            return message;
    	}
     
    	/** Valide du prenom. */
    	private String validationPrenom(String prenom) {
            String message = "";
    	    if (prenom.equals("")) {
                nbErreur = nbErreur + 1;
                message = "Le prénom doit être renseigné.";
    	    }
            return message;
    	}
     
    	/** Valide du telephone. */
    	private String validationTelephone(String telephone) {
            String message = "";
    	    if (telephone.equals("")) {
                nbErreur = nbErreur + 1;
                message = "Le téléphone doit être renseigné.";
    	    }
            return message;
    	}
    }
    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
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@ page errorPage="erreur.jsp"%>
    <!DOCTYPE html>
    <html lang="en">
      <head>
     
        <meta charset="utf-8">
        <title>Application connexion</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="">
        <meta name="author" content="">
        <link href="bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
     
        <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
        <!--[if lt IE 9]>
          <script src="../bootstrap/js/html5shiv.js"></script>
        <![endif]-->
     
        <!-- Fav and touch icons -->
        <link rel="apple-touch-icon-precomposed" sizes="144x144" href="bootstrap/ico/apple-touch-icon-144-precomposed.png">
        <link rel="apple-touch-icon-precomposed" sizes="114x114" href="bootstrap/ico/apple-touch-icon-114-precomposed.png">
        <link rel="apple-touch-icon-precomposed" sizes="72x72" href="bootstrap/ico/apple-touch-icon-72-precomposed.png">
        <link rel="apple-touch-icon-precomposed" href="bootstrap/ico/apple-touch-icon-57-precomposed.png">
        <link rel="shortcut icon" href="bootstrap/ico/favicon.png">
      </head>
      <body>
        <div class="container">
          <form class="form-signin" Action="login" Method=Post>
            <h2 class="form-signin-heading">Demande</h2>
    <%
            // Récupération du message d'erreur
            String erreur = (String) request.getAttribute("erreurs");
            // Affichage du message s'il existe
            if (erreur != null) { 
    %>
              <span class="erreur"><strong>Erreur : <%= erreur %></strong></span>
    <%
            } 
    %>
            <input type="text" class="input-block-level" name="nom" placeholder="Nom"/><span class="erreur"><%= request.getAttribute("erreurNom") %></span>
     
            <input type="text" class="input-block-level" name="prenom" placeholder="Prenom"/><span class="erreur"><%= request.getAttribute("erreurPrenom") %></span>
     
            <input type="text" class="input-block-level" name="telephone" placeholder="T&eacute;l&eacute;phone"/><span class="erreur"><%= request.getAttribute("erreurTelephone") %></span>
     
            <input type="text" class="input-block-level" name="email" placeholder="Email address"/><span class="erreur"><%= request.getAttribute("erreurMail") %></span>
     
            <button class="btn btn-large btn-primary" type="submit" value="Traiter">Traiter</button>
            <button class="btn btn-large btn-primary" type="Reset" value="Effacer">Effacer</button>
          </form>
     
        </div> <!-- /container -->
      </body>
    </html>
    !j'ai un problème avec mes accents qui n'apparaissent pas bien.
    Pouvez-vous me dire si c'est correct et s'il y a une autre solution plus propre sans utiliser les beans et javaScript.
    Par ailleurs, dans la vue, y a t-il un autre moyen que de faire des tests pour savoir si c'est null ou non pour les messages d'erreurs et pareil pour pouvoir afficher la valeur dans les champs textes quand on renvoie le formulaire avec des erreurs de saisie

  11. #11
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Voilà ce que j'ai fait. J'ai plus de contrôle à part pour l'affichage du message d'erreur donc la position correcte. voir post précédent. Je voudrai que le message d'erreur général ne soit pas collé au champs nom mais qu'il y est un espace entre les deux.
    Pour les autres messages d'erreurs, je voudrais qu'ils soient à côté du champs ou en dessous mais sans saut de ligne. Il faut un saut de ligne entre le message d'erreur et le champ suivant.


    Pouvez-vous me dire si cela est bien ou s'il y avait une autre solution sans utiliser de bean ni de javascript

    Ma servlet:
    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
    private static final long serialVersionUID = 3239007136416961422L;
        private int nbErreur;
     
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.getRequestDispatcher("/Vue/JSP/login.jsp").forward(request, response);
        }
     
        /* Traitement des données du formulaire */
        public void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        	nbErreur = 0;
     
            /* Récupération des champs du formulaire. */
        	String nom = request.getParameter("nom");
        	String prenom = request.getParameter("prenom");
        	String email = request.getParameter("email");
        	String telephone = request.getParameter("telephone");
     
            String erreurNom = validationNom(nom);
            String erreurPrenom = validationPrenom(prenom);
            String erreurTelephone = validationTelephone(telephone);
            String erreurMail = validationEmail(email);
     
            if (nbErreur > 0) {
                /* S'il y a des erreurs, ré-affichage du formulaire de création avec les erreurs */
                request.setAttribute("erreurNom", erreurNom);
                request.setAttribute("erreurPrenom", erreurPrenom);
                request.setAttribute("erreurTelephone", erreurTelephone);
                request.setAttribute("erreurMail", erreurMail);
     
                request.setAttribute("erreurs", "Il manque des &eacute;l&eacute;ments non transmis");
                //response.sendRedirect("login");
                getServletContext().getRequestDispatcher("/Vue/JSP/login.jsp").forward(request, response);
            }else{
                /* Sinon affichage de la fiche récapitulative */
                request.getSession().setAttribute("nomUtilisateur",nom);
                request.getSession().setAttribute("prenomUtilisateur",prenom);
                request.getSession().setAttribute("emailUtilisateur",email);
                request.getSession().setAttribute("telephoneUtilisateur",telephone);
     
                request.setAttribute("correcte", "La demande a correctement &eacute;t&eacute; trait&eacute; !");
                response.sendRedirect("accueil");        
            }
        }
     
        /* Valide l'adresse mail saisie. */
        private String validationEmail(String email) {
            String message = "";
    	    if (email.equals("")) {
                nbErreur = nbErreur + 1;
                message = "Merci de saisir une adresse mail.";
    	    }
            return message;
    	}
     
    	/** Valide du nom. */
    	private String validationNom(String nom) {
            String message = "";
    	    if (nom.equals("")) {
                nbErreur = nbErreur + 1;
                message = "Le nom doit &ecirc;tre renseign&eacute;.";
    	    }
            return message;
    	}
     
    	/** Valide du prenom. */
    	private String validationPrenom(String prenom) {
            String message = "";
    	    if (prenom.equals("")) {
                nbErreur = nbErreur + 1;
                message = "Le pr&eacute;nom doit &ecirc;tre renseign&eacute;.";
    	    }
            return message;
    	}
     
    	/** Valide du telephone. */
    	private String validationTelephone(String telephone) {
            String message = "";
    	    if (telephone.equals("")) {
                nbErreur = nbErreur + 1;
                message = "Le t&eacute;l&eacute;phone doit &ecirc;tre renseign&eacute;.";
    	    }
            return message;
    	}
    Ma JSP:
    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
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@ page errorPage="erreur.jsp"%>
    <%
            //Initialisation des différentes variables
            String erreurNom = "";
            String erreurPrenom = "";
            String erreurMail = "";
            String erreurTelephone = "";
            String nom = "";
            String prenom = "";
            String mail = "";
            String telephone = "";
     
            if((String)request.getAttribute("erreurNom")!= null){
              erreurNom = (String)request.getAttribute("erreurNom");
            }
            if((String)request.getAttribute("erreurPrenom")!= null){
              erreurPrenom = (String)request.getAttribute("erreurPrenom");
            }
            if((String)request.getAttribute("erreurMail")!= null){
              erreurMail = (String)request.getAttribute("erreurMail");
            }        
            if((String)request.getAttribute("erreurTelephone")!= null){
              erreurTelephone = (String)request.getAttribute("erreurTelephone");
            }
            if(request.getParameter("nom")!=null){
              nom = request.getParameter("nom");
            }
            if(request.getParameter("prenom")!=null){
              prenom = request.getParameter("prenom");
            }
            if(request.getParameter("mail")!=null){
              mail = request.getParameter("mail");
            }
            if(request.getParameter("telephone")!=null){
              telephone = request.getParameter("telephone");
            }
    %>
     
    <!DOCTYPE html>
    <html lang="en">
      <head>
     
        <meta charset="utf-8">
        <title>Application demande</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="">
        <meta name="author" content="">
     
        <!-- Le styles -->
        <link href="bootstrap/css/bootstrap.css" rel="stylesheet">
        <style type="text/css">
          body {
            padding-top: 40px;
            padding-bottom: 40px;
            background-color: #f5f5f5;
          }
     
          .form-signin {
            max-width: 300px;
            padding: 19px 29px 29px;
            margin: 0 auto 20px;
            background-color: #fff;
            border: 1px solid #e5e5e5;
          }
     
          .form-signin input[type="text"]{
            font-size: 16px;
            height: auto;
            margin-bottom: 15px;
            padding: 7px 9px;
          }
     
          .erreur {
            color: #FF0000;
            font-weight: bold;
          }
        </style>
        <link href="bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
      </head>
      <body>
        <div class="container">
          <form class="form-signin" Action="login" Method=Post>
            <h2 class="form-signin-heading">Demande</h2>
    <%
            // Récupération du message d'erreur
            String erreur = (String) request.getAttribute("erreurs");
            // Affichage du message s'il existe
            if (erreur != null) { 
    %>
              <span class="erreur">Erreur : <%= erreur %></span>
    <%
            } 
    %>
            <br />
     
            <input type="text" class="input-block-level" name="nom" placeholder="Nom" value="<%= nom %>"/><span class="erreur"><%=erreurNom %></span>
            <br />
     
            <input type="text" class="input-block-level" name="prenom" placeholder="Prenom" value="<%= prenom %>"/><span class="erreur"><%= erreurPrenom %></span>
            <br />
     
            <input type="text" class="input-block-level" name="telephone" placeholder="T&eacute;l&eacute;phone" value="<%= telephone %>"/><span class="erreur"><%= erreurTelephone %></span>
            <br />
     
            <input type="text" class="input-block-level" name="email" placeholder="Adresse mail" value="<%= mail %>"/><span class="erreur"><%= erreurMail %></span>
            <br />
     
            <button class="btn btn-large btn-primary" type="submit" value="Traiter">Traiter</button>
            <button class="btn btn-large btn-primary" type="Reset" value="Effacer">Effacer</button>
          </form>
     
        </div> <!-- /container -->
      </body>
    </html>

Discussions similaires

  1. Champ de saisie - Formulaire
    Par afrodje dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 09/05/2007, 11h19
  2. Saisie Formulaire Et Requete
    Par energies dans le forum IHM
    Réponses: 1
    Dernier message: 21/02/2007, 17h29
  3. Validation saisie formulaire
    Par pleasewait dans le forum IHM
    Réponses: 2
    Dernier message: 29/12/2006, 15h20
  4. masque saisie formulaire
    Par cramix dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 02/12/2006, 16h11
  5. Contrôle de saisie formulaire
    Par miram dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/02/2006, 08h33

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