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 :

Programmer les boutons d'une JSP


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 121
    Points : 43
    Points
    43
    Par défaut Programmer les boutons d'une JSP
    J'ai une page JSP qui contient 3 boutons et je veux que chaque bouton appelle une servlet.Comment je peux faire ça?
    Merci

  2. #2
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Bjr,
    C'est très simple, tu declares dans ton web.xml 3 patterns mappant sur les 3 servlets auxquels tu veux faire appels, et dans les actions "onclick" de tes boutons tu appels une fonction à laquelle tu passes le nom de ton bouton en cours, et dans cette fonction tu mets ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function sendForm(nom_button)
    en fonction du nom du button
    document.monform.action="ton_pattern_web_xml";				        
    document.monform.submit();
    c'est une idée fonctionnelle que tu dois adapter à ton besoin, apres si tu veux plus details tu poses d'autres questions.

  3. #3
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Chaque bouton doit être associé à une servlet différente ?

    si c'est ce que tu veux, tu as 2 possibilité aller même 3 :p

    la première 3 boutons => 3 formulaires => 3 actions une vers chaque servlet

    deuxième solution :
    un formulaire
    et tu passes par du javascript

    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
     
    function mesActions(bouton)
    {
    	if(bouton=="1")
    	{
    		document.Nom_Du_Form.action="mapping servlet1+ paramètre";
    		document.Nom_Du_Form.submit();
    	}	
    	else if(bouton=="2")
    	{
    		document.Nom_Du_Form.action="mapping servlet2+ paramètre";
    		document.Nom_Du_Form.submit();
    	}
    	else
    	{
    		document.Nom_Du_Form.action="mapping servlet3+ paramètre";
    		document.Nom_Du_Form.submit();
    	}	
    }
    et sur tes boutons le onclick="mesActions("1")";


    la troisième solution 1 fonction javascript et une seul servlet sur le même principe sauf que tu passeras un paramètre qui dira quel traitement appliquer en fonction du bouton

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 121
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par link256 Voir le message
    deuxième solution :
    un formulaire
    et tu passes par du javascript

    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
     
    function mesActions(bouton)
    {
    	if(bouton=="1")
    	{
    		document.Nom_Du_Form.action="mapping servlet1+ paramètre";
    		document.Nom_Du_Form.submit();
    	}	
    	else if(bouton=="2")
    	{
    		document.Nom_Du_Form.action="mapping servlet2+ paramètre";
    		document.Nom_Du_Form.submit();
    	}
    	else
    	{
    		document.Nom_Du_Form.action="mapping servlet3+ paramètre";
    		document.Nom_Du_Form.submit();
    	}	
    }
    et sur tes boutons le onclick="mesActions("1")";


    en fonction du bouton
    Merci mais c'est quoi "paramètre"?est ce que je dois écrire ça tel qu'il est juste en remplaçant "servlet1" par le nom de ma servlet ou il y a d'autre modification pour "paramètre"?
    Merci

  5. #5
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Ta servlet a-t-elle besoin de paramètre que tu récupères par la request pour faire son traitement ?

    si oui tu peux avoir monParam=coucou

    Dans le cas contraire le mapping associé à ta servlet défini dans ton web.xml suffit

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 121
    Points : 43
    Points
    43
    Par défaut
    Bon désolée mais j'ai pas encore bien saisi.J'ai encore le meme problème.je ne comprends pas bien la notion de formulaire.Le problème que je veux que chaque bouton de ma page JSP me mène vers une servlet et chacune de ces servlet a besoin de tous les champs texte de ma JSP donc je crois que je dois avoir des formulaires dont le nombre est égal au nombre de servlet.n'est ce pas?Comment et où je dois écrire les balises de mes formulaires pour que chaque servlet peut voir tous les champs de JSP?
    J'espère que vous pouvez m'aider.Merci

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 121
    Points : 43
    Points
    43
    Par défaut
    J'ai encore le meme problème et je me bloque.y a quelqu'un qui peut m'aider?
    Merci.

  8. #8
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    bonjour,

    je vois bien une solution javascript qui fonctionnerait, m'enfin si je me trompe pas dans la syntaxe...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <form method="post" action="/servlet1">
    <input type="text" name="test1"/>
    <input type="button" name="btn1" value="servlet2" onclick="this.form.action='/servlet2';this.form.submit();"/>
    <input type="button" name="btn2" value="servlet3" onclick="this.form.action='/servlet3';this.form.submit();"/>
    <input type="submit" name="btn3" value="defaut" />
    </form>

  9. #9
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Pas mal l'idée de changer l'action du formulaire sur le onclick plutôt que de déclarer de nouvelle fonction.

    la syntaxe à l'air d'être bonne

  10. #10
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 121
    Points : 43
    Points
    43
    Par défaut
    J'ai essayé avec la solution proposée mais ça marche pas, je ne comprends pas pourquoi.Voilà mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <body>
    <form name="MyForm" action="http://localhost:8080/stage/Envoi" method="post">
     <label>
      <input name="envoyer" type="submit" id="envoyer" value="Envoyer"/>
    </label>
    <label>
       <input name="ajoutDest" type="button" id="ajoutDest" value="Ajouter destinataire" onclick="this.MyForm.action='http://localhost:8080/stage/Destinataire';this.MyForm.submit();"/>
    </label>
    <label>
        <input name="consulter" type="button" id="consulter" value="Consulter groupe" onclick="this.MyForm.action='http://localhost:8080/stage/Groupe';this.MyForm.submit();"/>
     </label>
    </form>
    </body>

  11. #11
    Membre actif Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    Points : 251
    Points
    251
    Par défaut
    fais un mapping dans ton web.xml pour éviter ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost:8080/stage/Envoi
    .
    En plus moi je préfère une seul servlet dans le action de ton formulaire et qui dispatch suivant le bouton cliqué .

  12. #12
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    il ne faut pas mettre l'url absolue dans l'attribut action du formulaire, effectivement le mapping n'est pas connue dans l'application.

    Citation Envoyé par jiddou
    En plus moi je préfère une seul servlet dans le action de ton formulaire et qui dispatch suivant le bouton cliqué .
    oui, moi aussi, sauf qu'il faut faire un contrôleur, et que ce n'est pas la question initiale....


  13. #13
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Normalement en remplaçant

    action="http://localhost:8080/stage/Envoi"

    par action="/stage/Envoi"

    même chose pour les 2 autres boutons

    voir remplacer stage par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getContextPath()
    comme ça si tu décides de changer ton contexte applicatif tu n'auras pas à le modifier dans toutes tes jsp et servlet.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Autre solution que je trouve un peu plus propre :

    - Un seul formulaire, avec une servlet dans "action".
    - Un champ hidden
    - 3 boutons submit
    - Un appel javascript sur le onclick de chaque bouton mettant à jour le champ hidden (document.getElementById('monChampHidden').value = 'lActionCliquee')
    - Une servlet (sus-citée) qui récupère la valeur du champ caché et forwarde sur la bonne servlet (ou la bonne méthode, pas forcément utile de faire 3 servlets, après ça dépend de tes besoins)

    C'est un poil plus lourd à écrire mais ça me semble plus propre, plus classique aussi, après, chacun ses goûts. Personnellement j'ai déjà éprouvé la méthode de changer l'action du form, c'est tout-à-fait envisageable bien que je ne sois pas fan. En revanche je déconseille la reconstruction d'URL en javascript, c'est franchement casse-gueule.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Citation Envoyé par link256 Voir le message
    Normalement en remplaçant

    action="http://localhost:8080/stage/Envoi"

    par action="/stage/Envoi"

    même chose pour les 2 autres boutons

    voir remplacer stage par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getContextPath()
    comme ça si tu décides de changer ton contexte applicatif tu n'auras pas à le modifier dans toutes tes jsp et servlet.
    Ben il suffit de mettre "Envoi" (sans '/') au lieu de "/stage/Envoi", et no problemo, non ?

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Citation Envoyé par ska_root Voir le message
    oui, moi aussi, sauf qu'il faut faire un contrôleur, et que ce n'est pas la question initiale....
    Je pense qu'il évoquait la même solution que moi, donc pas vraiment un contrôleur, juste une servlet de sortie unique et dispatch "à la main".

Discussions similaires

  1. programmer les bouton de clavier
    Par Ucom-C++ dans le forum C
    Réponses: 1
    Dernier message: 03/04/2007, 18h50
  2. Comment positionner les boutons sur une applet ?
    Par jayjay.f dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 10/11/2006, 07h13
  3. [VBA-E] Parcourir tous les boutons d'une feuille
    Par striky2 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/05/2006, 08h51
  4. Réponses: 4
    Dernier message: 29/09/2005, 11h50
  5. [Servlet] récupérer les champs d'une jsp
    Par phoebe dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 12/05/2004, 16h32

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