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 :

Gestion Formulaire JSP -> Servlet -> JSP


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Par défaut Gestion Formulaire JSP -> Servlet -> JSP
    Bonjour,

    Descripition de situation :

    index.jsp est une page contenant Un petit formulaire (Nom,Prenom + bouton) quand je clike sur ce bouton , on se dirige vers traite.java qui est une servlet qui va traiter la validité des Deux champs.
    Si le teste est bon --- > se diriger vers la page Acceuil.jsp
    Sinon je retourne à ma page index.jsp en Colorant les champs qui ne sont pas valide et aussi garder les valeurs des champs qui sont valide.

    Je vous liste les 2 pages JSP , la srevlet :

    Page : index.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
     
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    	<style type="text/css">
                    #err{
                            background-color : red;
                    }
            </style>
    </head>
    <body>
        <%String champ1 = "";
            String champ2 = "";
                    champ2 = request.getAttribute("Champ2").toString();
                    champ1 = request.getAttribute("Champ1").toString();
     
                    if(champ1 == null){
                     champ1 = "";
                     champ2 = "";
                    }
         %>
     
        		<form action = "traite" method = "post">
                    Nom : <input <% if(champ1.equals("")) out.print("id = \"err\""); %> name = "NomChamp1" type = "text" value = "<%= champ1%>">
    				<br>
                    Prénom : <input <% if(champ1.equals("")) out.print("id = \"err\""); %> name = "NomChamp2" type = "text" value = "<%= champ2%>">
    				<br>
    				<input type = "submit" name = "envoyer" value = "Envoyer">
    			</form>
     
     
    </body>
    </html>
    Servlet : traite.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    public class traite extends HttpServlet {
      public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
     
     
            String Str1 = request.getParameter("NomChamp1");
            String Str2 = request.getParameter("NomChamp2");
     
            request.setAttribute("Champ1",Str1);
            request.setAttribute("Champ2",Str2);
     
            if(Str1.equals("") || Str2.equals("")){
                String nextJSP = "/index.jsp";
                RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
                dispatcher.forward(request,response);
            }       
            else{
            String nextJSP = "/acceuil.jsp";
            RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
            dispatcher.forward(request,response);
            }
     
        } 
     
    }
    Page : Acceuil.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
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <h1>BienVenue</h1>
            <hr>
            <%
           String champ2 = request.getAttribute("Champ2").toString();
           String champ1 = request.getAttribute("Champ1").toString();
         %>
     
                    Nom : <%= champ1%>
    				<br>
    				Prénom : <%= champ2%>
     
     
     
        </body>
    </html>

    Le Problème !

    Voilà le message D'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
    
    exception
    
    org.apache.jasper.JasperException: Exception in JSP: /index.jsp:17
    
    14: <body>
    15:     <%String champ1 = "";
    16:         String champ2 = "";
    17:                 champ2 = request.getAttribute("Champ2").toString();18:                 champ1 = request.getAttribute("Champ1").toString();
    19: 
    20:                 if(champ1 == null){
    Alors, c'est logique que dans le premier Loading de la page, on ne peut pas parler de request.getAttributte("....."); puisque cette information est bien évidement retournée par la servlet . Je suis assez Débutante en J2EE et je connais pas une méthode pour réussir ce teste .

    Veuillez s'il vous plaît me corriger ce code , soit me proposer une autre Solution , et je serai très redevable .

    Sisiniya.

  2. #2
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Il faut ajouter un test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ( request.getAttribute("Champ2") != null )
    {
       champ2 = (String) request.getAttribute("Champ2");
    }
    if ( request.getAttribute("Champ1") != null )
    {
       champ1 = (String) request.getAttribute("Champ1");
    }

  3. #3
    Membre confirmé Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Par défaut
    Voilà la page index.jps avec l'ajout de votre ligne :

    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
     
     
    <body>
        <%
                    String champ1;
                    String champ2;
                   
     
     
                    if ( request.getAttribute("Champ1") != null )
                    {
                        champ2 = (String) request.getAttribute("Champ2").toString();
                        champ1 = (String) request.getAttribute("Champ1").toString();
                    }
                    else
                        {
                            champ2 = "";
                            champ1 = "";
                        }
                    
         %>
     
        		<form action = "traite" method = "post">
                    Nom : <input <% if(champ1.equals("") && request.getAttribute("Champ1") != null) out.print("id = \"err\""); %> name = "NomChamp1" type = "text" value = "<%= champ1%>">
    				<br>
                    Prénom : <input <% if(champ1.equals("") && request.getAttribute("Champ1") != null) out.print("id = \"err\""); %> name = "NomChamp2" type = "text" value = "<%= champ2%>">
    				<br>
    				<input type = "submit" name = "envoyer" value = "Envoyer">
    			</form>
     
     
    </body>
    mais dans le cas ou j'ai nom valide et prénom est vide, Normalement il doit me colorer juste prenom, or il colore les deux champs !

  4. #4
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Ben déjà, si tu avais vraiment suivi mon exemple, tu aurais dû coder ceci :
    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
                    if ( request.getAttribute("Champ1") != null )
                    {
                        champ1 = (String) request.getAttribute("Champ1") ;
                    }
                    else
                    {
                            champ1 = "";
                    }
                     if ( request.getAttribute("Champ2") != null )
                    {
                        champ2 = (String) request.getAttribute("Champ2") ;
                    }
                    else
                    {
                            champ2 = "";
                    }
    Et puis, dans les deux balises input, tu fais le test sur le même champ champ1.

    Enfin, sinon, pourquoi n'appelles-tu pas tout simplement tes champs et es objets nom et prenom ?
    Ce serait déjà plus logique et tu t'y retrouverais plus facilement.

  5. #5
    Membre confirmé Avatar de sisiniya
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Par défaut
    :-) Oui Oui j'ai pas fait attention pour les même champs .

    S'il vous plaît une question :

    Si cette ligne request.getAttribute("Champ1") != null désigne que j'ai effectué un clik sur le bouton ( car si je ne clik pas l'expression est égal à null ), alors il suffit juste de faire le test sur l'un des champs, car c'est beaucoup couteux si j'ai un formulaire en plusieurs champs ??

    Merci

  6. #6
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Mais si tu fais le test seulement sur un des champs, si ce champ n'est pas valide, tous tes champs seront colorés.

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

Discussions similaires

  1. liaison jsp vers servlet vers jsp
    Par wafabrj dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 13/06/2012, 16h07
  2. Utiliser les JSP et servlets pour un formulaire
    Par james23 dans le forum Servlets/JSP
    Réponses: 38
    Dernier message: 23/08/2010, 19h30
  3. formulaire avec jsp ou servlet
    Par ulysse031 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 21/08/2008, 14h33
  4. Fichier JSP avec servlet et formulaire
    Par axel119 dans le forum Servlets/JSP
    Réponses: 25
    Dernier message: 08/08/2007, 14h24
  5. [ SERVLET ] [JSP ] Redirection servlet vers JSP
    Par Enfa dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 23/02/2005, 14h55

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