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ôle des données d'un formulaire ?


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 473
    Par défaut contrôle des données d'un formulaire ?
    Bonjour à tous,

    Je bloque sur un problème, j'ai une jsp avec un formulaire, après validation je redirige vers un servlet qui effectue des contrôles sur les données.

    Ensuite je voudrais revenir à ma jsp initiale SI il y a un problème avec les données saisies. Je voudrais afficher sur le formulaire les endroits ou ca bloque et et les données déjà saisies.

    Comment fait cela le plus simplement possible ?
    En php j'utilisais les session, mais la je me suis lancé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ..pour le servlet...
    ServletContext context = getServletContext();
    context.setAttribute("verifUserName", verifUserName);
     
    ..pour le jsp...
    ....application.getAttribute("verifUserName")...
    Mais je me retrouve avec de nombreuses variables, et je ne peux détecter l'évenement "est ce que ma page à déjà été chargée/validée ou est ce que c'est la première fois que le visiteur la consulte ?"

    Je vous remercie de vos réponses,

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 511
    Par défaut
    Idem php, tu mets tes reponses en session que tu retournes à ta jsp tant que non validé. Le traitement est identique.
    Pour les valeurs null ou vides utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //existance du controle
    if(reponse.getParameter("nom_ctrle")!=null)
       {}
    //puis
    if(!reponse.getParameter("nom_ctrle").equal(""))
      {}

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 473
    Par défaut
    Alors je ne dois pas avoir compris le fonctionnement des sessions en java...

    Dans la FAQ il disent que les sessions se gérent de deux facons :
    * à l'aide de cookies
    * à l'aide re la réécriture d'URL


    Et je ne comprend pas du tout le lien entre les 3.....

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Bonjour,

    1) En ce qui concerne les sessions, il va falloir que tu utilises l'objet "session" et non "application" :

    session.getAttribute("XXX") et session.setAttribute("XXX", monObjet)

    L'objet "application" est partagé par tous les utilisateurs.

    2)
    Citation Envoyé par samtheh Voir le message
    Mais je me retrouve avec de nombreuses variables, et je ne peux détecter l'évenement "est ce que ma page à déjà été chargée/validée ou est ce que c'est la première fois que le visiteur la consulte ?"
    Si ton formulaire est OK tu passes à la JSP suivante, sinon tu renvois sur la même JSP. Il serait bien que tu te crées une classe Java représentant les champ de ton formulaire, tu n'aurais que cet objet à injecter dans la session.

    Pour le récupérer tu ferais genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <%
    AuthentificationForm form = (AuthentificationForm)session.getAttribute("XXX");%>
    <input type="text" name="login" value="<%=form.getLogin()%>"/>
    <input type="text" name="password" value="<%=form.getPassword()%>"/>
    Dans ton cas d'ailleurs je pense que tu n'as même pas besoin de mettre le contenu de ton formulaire en session, il te suffit de le mettre dans request.setAttribute("XXX", monObjet).

    3) Pour ce qui concerne la session gérée par les cookies ou dans l'URL, en fait pour toi c'est transparent. Si le navigateur de l'utilisateur autorise les cookies alors la clé de session (sessionid) sera injectée dans un cookie, dans le cas contraire ce sera un paramètre supplémentaire dans l'URL.

  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
    Billets dans le blog
    1
    Par défaut
    Pour faire ce genre de traitement, il faudrait créer un bean qui représente les différentes propriétés (champs) de ta page avec accessoirement une propriété String associée pour spécifier la nature de l'erreur.
    Du coup, tu peux utiliser le request plutôt que session.
    Ta servlet instancie le bean, charge les valeurs reçuent via le request, contrôle les propriétés, positionne les messages d'erreurs et positionne le bean dans le request pour réaffichage de la page (qui référence le bean) :
    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
     
    public class MonBean
    {
       private String champ1;
       private String champ1Erreur;
       private String champ2;
     
       public MonBean()
       {
          super();
       }
       public String getChamp1()
       {
          return champ1;
       }
       public void setChamp1(String champ1)
       {
          this.champ1 = champ1;
       }
       public String getChamp1Erreur()
       {
          if ( champ1Erreur == null || champ1Erreur.trim().length() == 0 ) return "";
          return "<font style=\"color:red\">" + champ1Erreur + "</font>";
       }
    ...
    }
    La 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
     
    public void service(HttpServletRequest request, HttpServletResponse response)
    {
       MonBean bean = new MonBean();
       bean.setChamp1( request.getParameter("champ1") );
       bean.setChamp2( request.getParameter("champ2") );
     
       // contrôles
    ...
     
       request.setAttribute("monBean", bean);
       request.getRequestDispatcher("/dir1/maPage.jsp").forward(request, response);   
     
    }
    La jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <jsp:useBean type="paquage.MonBean" id="monBean" scope="request"/>
    ...
     
    <tr>
    <td>Saisissez champ1</td>
    <td>
       <input type="text" name="champ1" value="<%=monBean.getChamp1()%>" .../>
    <%=monBean.getChamp1Erreur()%>
    </td>
    </tr>
    ...
    Quelque chose dans le genre...
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Et pour éviter d'écrire du HTML dans le bean :

    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
    // Bean :
    public boolean isChamp1Erreur()
    {
       return champ1Erreur != null || champ1Erreur.length() > 0;
    }
     
    public String getChamp1Erreur()
    {
       return champ1Erreur;
    }
     
    // JSP :
    <input type="text" name="champ1" value="<%=monBean.getChamp1()%>" .../>
    <% if (monBean.isChamp1Erreur()) %>
    <font style="color:red"><%=monBean.getChamp1Erreur()%></font>
    <% } %>

  7. #7
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Duc Lebowski Voir le message
    Et pour éviter d'écrire du HTML dans le bean :

    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
    // Bean :
    public boolean isChamp1Erreur()
    {
       return champ1Erreur != null || champ1Erreur.length() > 0;
    }
     
    public String getChamp1Erreur()
    {
       return champ1Erreur;
    }
     
    // JSP :
    <input type="text" name="champ1" value="<%=monBean.getChamp1()%>" .../>
    <% if (monBean.isChamp1Erreur()) %>
    <font style="color:red"><%=monBean.getChamp1Erreur()%></font>
    <% } %>
    Tout à fait !
    Encore que là, c'est déjà très spécialisé... l'idéal étant de formater par un taglib
    (mais c'est une bonne remarque pour quelqu'un d'aussi vieux (97) )

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Je crois que je ne pouvais pas mettre plus !

    Vivement que je sois centenaire, je t'inviterai à mon anniversaire pour la soirée loto

    @pluche !

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/04/2006, 12h14
  2. [DREAMWEAVER8] Envoyer des données d'un formulaire sur mail
    Par steeves5 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 21/02/2006, 18h15
  3. Réponses: 6
    Dernier message: 15/02/2006, 14h02
  4. Récupération des données d'un formulaire
    Par placenargac dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 04/02/2006, 15h10
  5. [ JSP ] Réaffichage des données d'un formulaire apres un ret
    Par captainpouet dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 23/04/2004, 11h55

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