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 :

deux actions pour un bouton submit


Sujet :

Servlets/JSP Java

  1. #1
    Membre actif
    Inscrit en
    Février 2007
    Messages
    406
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 406
    Points : 207
    Points
    207
    Par défaut deux actions pour un bouton submit
    bonjour !
    je souhaite afficher un formulaire dont le bouton submit realise deux actions, c'est a dire que si l'utilisateur ne tape rien, l'action va se faire vers la page elle meme sinon on passe à une autre page.
    pour cela j'ai fais un truc de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <%String action;%> 
    <%if (formulaire plein) action="page_elle_meme.jsp";
    else action="autre_page.jsp"{%>
    <form action="<%=action%>" method=post>
    ...
    </form>
    <%}%>
    seulement ca ne fonctionne pas comme j'avais prevu!
    en fait quand je fais le test avec un formulaire non rempli tout fonctionne bien, la page est reaffiché, mais lors du remplissage, quand j'appuie sur submit, le formulaire est reaffiché à nouveau, il faudra alors un nouveau click sur le bouton submit pour qu'il m'envoie vers la nouvelle page.
    cela dit qu'il faut réafficher le formulaire pour pouvoir changer l'action du bouton???
    sinon je trouve pas autre solution que de repeter un nouveau formulaire avec un nouveau bouton pour chaque condition
    j'espere que c'est clair, si vous avez une solution ca serai sympa!
    merci.

  2. #2
    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
    Pour résumé :
    tu as une page qui envoie vers une autre si elle est entièrement remplie.
    si elle ne l'est pas, tu la réaffiche

    Ma question est la suivante :
    As-tu besoin d'un allez/retour vers le contrôleur pour réafficher la page (par exemple parce que tu envoies un message) ou peux-tu t'en passer

    Si tu peux t'en passer, le plus simple (à mon sens) serait de cacher le bouton "submit" qui envoie vers l'autre page et de l'afficher quand la page est pleine.
    Du coup, tout se passe sur le client par du javascript, quelque chose comme 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <head>
    <script>
    function testToutRempli()
    {
       ...
       
       if ( ok )
       {
          document.getElementById("boutonSubmit").style.visibility = "visible";
       }
       else
       {
          document.getElementById("boutonSubmit").style.visibility = "hidden";
       }
    }
    </script>
    </head>
    <body>
    ...
    <form ...>
       ...
       <input type="submit" ... style="visibility:hidden"/>
    </form>
    </body>
    A+

    PS : J'oubliais, tu peux référencer cette méthode dans l'évènement onblur de tes champs en saisie...

  3. #3
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Points : 412
    Points
    412
    Par défaut Réponse
    tu ne doit pas faire comme ca. il faut par exemple avec une servlet rediriger l'internaute;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io;
     
    public class Redirection extend HttpServlet (public void doPost(HttpServlet req, HttpServletResponse res) throws ServletException,IOException
    { String textSais = req.getParameter("texteSaisie");
    if textSais="" then {faire quelquechose comme req.setAttribute("reponse","champs saise donne ect...}
     
    getServletContext().getRequestDispatcher("/jsp/nouevellePage.jsp"); }
    voila si tu as encore des dificultées envoi moi un message privé Philcmoi

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Points : 110
    Points
    110
    Par défaut
    ranell,
    le fonctionnnement de ton code est logique,
    vu que ton if est exécuté au niveau du serveur et non du navigateur.

    le if n'est donc exécuté que lorsque le formulaire est rempli et envoyé au serveur. c'est seulement à ce moment que ton bouton est changé... mais la page_elle_meme est renvoyé... vu que c'est celle demandé. tu as donc un "retard" de 1 submit....

    la solution la meilleur est celle de philcmoi si tu ne souhaite pas changer dynamiquement le libellé du bouton... le bouton ne change pas, mais le serveur redirige vers la page correcte.

    la solution javascript te permet en plus de changer le libellé du bouton.

    P.

  5. #5
    Membre actif
    Inscrit en
    Février 2007
    Messages
    406
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 406
    Points : 207
    Points
    207
    Par défaut
    bonjour,
    merci à tt ceux qui m'ont répondu.
    en fait, j'avais pensé a la solution avec javascript , mais je crois qu'avec getRequestDispatcher ca serai plus simple.
    je l'ai essayé et ca fonctionne a merveille

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

Discussions similaires

  1. Gérer deux actions pour un seul bouton SpeedButton
    Par ptitemeuh dans le forum Débuter
    Réponses: 8
    Dernier message: 04/07/2011, 10h44
  2. deux actions pour un bouton
    Par allhambra dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/07/2007, 11h34
  3. Problème de formulaire : deux actions pour un formulaire
    Par bodysplash007 dans le forum Langage
    Réponses: 10
    Dernier message: 15/05/2007, 11h12
  4. [PHP-JS] Deux actions sur un bouton ?
    Par FraK dans le forum Langage
    Réponses: 6
    Dernier message: 01/04/2007, 11h06
  5. Réaliser 2 actions pour un seul submit !
    Par pekka77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 28/10/2005, 14h22

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