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

  1. #1
    Membre du Club
    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 éminent
    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");
    }
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Membre du Club
    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 éminent
    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.
    Modératrice Java - Struts, Servlets/JSP, ...

  5. #5
    Membre du Club
    :-) 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 éminent
    Mais si tu fais le test seulement sur un des champs, si ce champ n'est pas valide, tous tes champs seront colorés.
    Modératrice Java - Struts, Servlets/JSP, ...

  7. #7
    Membre du Club
    Je vous remercie infiniment pour vos explication .

    Si vous me permettez une autre question :

    Je veux faire des testes sur les champs ( si il est String ou entier ou e-mail valide ....) dans La servlet, le problème c'est que quand je veux colorer ceux qui ne sont pas valide dans la page JSP, je dois réecrire dans chaque champ ce teste , est ce qu'il y a une méthode mieux que ça ??

    Merci beaucoup .

  8. #8
    Membre du Club
    Merci problème résolu

###raw>template_hook.ano_emploi###