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

Struts 1 Java Discussion :

[Struts] Identifier le submit cliqué dans l'ActionForm


Sujet :

Struts 1 Java

Vue hybride

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Par défaut [Struts] Identifier le submit cliqué dans l'ActionForm
    Salut tout le monde,

    Voilà j'ai un problème sur un formulaire qui contient plusieurs submit qui on le même libellé, voici un exemple :

    <html:submit property="action" onclick="return verifEditLibFonction();"><bean:message key="btn.editLibelleFonction"/></html:submit>

    <html:submit property="action" onclick="return verifAddFonction();"><bean:message key="btn.addLibelleFonction"/></html:submit>
    considérons ces 2 submit dans la jsp, et ceci dans le ressourcesproperties :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    btn.editLibelleFonction=Appliquer
    btn.addLibelleFonction=Appliquer
    ce que je voudrais faire c'est une verif dans le validate() de l'ActionForm, mais le problème c'est que quelque soit le submit cliqué, ceci renverra la même valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getParameter("action")
    à savoir ca retournera le String "Appliquer" mais ca me dira pas sur quel submit on a cliqué.

    Une solution serait de donner des libellés différents à chacuns de mes submit, mais j'ai 3 fois "Ajouter" et 3 fois "Appliquer" alors bon faut presque un dictionnaire des synonymes si je fais ca !

    merci bcp

  2. #2
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Sinon tu peux utiliser javascript.

    Change ton input type="sumbit" en button et sur l'evenement onClick (ou autre ?) tu appelles une fonction javascript qui remplie une variable from (le bouton que tu as cliqué) et qui submit le formulaire.

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function submitMonForm(from) { 
      var form = document.candidatureForm;
      form.action = 'tonAction.do';
     form.from = from;
      form.submit();
    }
    
    PS : je l'ecris a l'arrache, j'ai pas testé hein

    Edit : pas besoin de modifier le bouton submit, tu appelles ta fonction javascript dans le onsubmit de ton formulaire (l'attribut doit exister dans le tag du form) et tu n'es pas non plus obligé de modifier ton action non plus dans ton javascript.

    Par contre comme le dis Vanilla il faut ajouter la propriété from dans ton ActionForm ainsi que de le déclarer en hidden dans ta JSP

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Par défaut
    Je sais pas trop si c'est compatible avec le LookupDispatchAction que j'utilise, parce que le paramètre action doit prendre la valeur de la clé que je donne dans le html:submit...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Par défaut
    je peux aussi mettre un champ caché que je rempli avant le submit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:submit property="action" onclick="return verifEditLibFonction();"><bean:message key="btn.editLibelleFonction"/></html:submit>
     
    <html:submit property="action" onclick="return verifAddFonction();"><bean:message key="btn.addLibelleFonction"/></html:submit>
    et dans chacune de mes fonctions javascript, une fois les vérifs faites, je place une valeur drapeau dans ce champ caché, puis je récupère ce champ avec un request.getParameter() non?

  5. #5
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    J'ai édité le message d'avant.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Par défaut
    ce que j'ai testé entre temps fonctionne, à savoir ca :

    mettre le hidden dans le form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:hidden property="origineSubmit"/>
    dans les fonctions javascript qui vérifient la saisie, j'ai ca avant de retourne true :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms[0].origineSubmit.value="ajouterFonction";
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms[0].origineSubmit.value="editerFonction";
    puis quand j'arrive dans l'ActionForm je teste comme cela dans le validate() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     // TRAITEMENT DES FONCTIONS/METIERs
            if (origineSubmit.equals("editerFonction")){
                System.out.println("éditer fonction");
                }
     
            if (origineSubmit.equals("ajouterFonction")){
                System.out.println("add fonction");            
            }
    voilà bon par contre pour éviter de zapper la mise en place du paramètre faut que je mette ma vérif sur chaque submit à la fois dans le onclick et le on keypress sinon si l'utilisateur tape entrée ca ne prend pas en compte l'origine du submit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     <html:submit property="action" onkeypress="return verifEditLibFonction();" onclick="return verifEditLibFonction();">
    <bean:message key="btn.editLibelleFonction"/>
    </html:submit>

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

Discussions similaires

  1. [Struts] reset dans une ActionForm avec des int
    Par mariemor64 dans le forum Struts 1
    Réponses: 19
    Dernier message: 18/05/2006, 12h47
  2. [struts]validate dans chaque actionForm?
    Par questionneuse dans le forum Struts 1
    Réponses: 3
    Dernier message: 17/05/2006, 15h36
  3. [ Struts ] récupération des roles dans l'ActionForm
    Par rikunter dans le forum Struts 1
    Réponses: 3
    Dernier message: 21/04/2006, 10h07
  4. [struts][jsp] récupérer objet session dans ActionForm
    Par mlequim dans le forum Struts 1
    Réponses: 24
    Dernier message: 02/11/2005, 16h32
  5. Réponses: 2
    Dernier message: 26/05/2005, 12h11

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