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 2 Java Discussion :

Associer actions differentes a deux boutons dans le meme formulaire


Sujet :

Struts 2 Java

  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut Associer actions differentes a deux boutons dans le meme formulaire
    j'ai un formulaire avec deux boutons de validation.

    Comment associer une action a chacun d'entre eux ?

    merci

  2. #2
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    cf :

    http://java.developpez.com/faq/strut...dispatchAction

    Par contre c'est du Struts 1 je sais pas si c'est le même chose en Struts 2.
    Dans l'exemple le parameter est appelé "hidden" perso j'aurais plutôt tendance à mettre "action" ou "actionMethod" je trouve ça plus pertinent.

  3. #3
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    oula du javascript !

    Suis - je obligé d'en utiliser ?

    En effet je vois pas trop comment traduire cela en Struts 2 ...

  4. #4
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    Sans javascript mais encore en Struts 1

    http://java.developpez.com/faq/strut...DispatchAction

  5. #5
    Membre confirmé

    Inscrit en
    Avril 2005
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 317
    Points : 553
    Points
    553
    Par défaut
    Dans le tag <s:submit> il y a une proprieté "method" qui te permet de préciser quelle méthode de l'action appeler lors du submit

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    Si tu as vraiment besoin d'aller vers une action pour chaque bouton, tu peux ajouter deux méthodes (validate1() et validate2()) dans ton action et chainer chaque méthode vers son action.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <s:submit method="validate1" key="button.validate1"/>
    <s:submit method="validate2" key="button.validate2"/>

  7. #7
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Mais si on met l'action sur un bouton alors on ne pourra pas récupérer les valeurs du formulaire dans l'ActionSupport, non?

    merci

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    Ton tag form indique le nom de l'action et cette action contient deux méthodes. Donc, tu transmets bien les valeurs a ton action qui devient un pseudo dispatcher/

  9. #9
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Mais en suite dans mon struts.xml, comment est ce que j'associe chaque action?

    merci

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    Tes deux méthodes retournent chacune un result qui permet de chainer son action.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        <!-- items -->
        <action name="displayItemsAction" class="displayItemsAction">
          <result name="result1" type="chain">result1Action</result>
          <result name="result2" type="chain">result2Action</result>
        </action>
    Par contre, il ne faut oublier d'ajouter les getter/setter des dans chaque actions afin de transférer les valeurs des champs.

  11. #11
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Donc je dois définir aussi une classe java pour chacune des actions ?

    je ne peux pas traiter les deux actions dans la meme classe ?

    merci

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 117
    Points : 97
    Points
    97
    Par défaut
    t'es pas obligé de créer 2 classes action :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <action name="monAction" class="mon.package.maClasse" method="maMethode">
    A+

  13. #13
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Désoé mais je ne comprends plus rien !

    Pourrais je avoir un apercu du fragment de code a placé dans chaque fichier ?

    Je ne suis pas encore tres a l'aise avec les actions, méthodes et cie ...

    merci beaucoup

  14. #14
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Bonjour !

    Voici un petit descriptif de ce que tu dois avoir dans tes différents fichiers :

    Dans ton fichier jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <s:form action="monAction">
       ...
       <s:submit method="maMethode1" value="..." />
       <s:submit method="maMethode2" value="..." />
    </s:form>
    Dans ton struts.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <action name="monAction" class="nomDeTaClass">
       <result name="success">...</result>
    </action>
    Dans ta class :
    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
     
    public class nomDeTaClass extends ActionSupport
    {
    	...
     
            // Methode appelée par défaut c'est à dire quand il n'y a pas de méthode spécifiée
    	public String execute()
    	{
    		...
    	}
     
            // Methode appelée par le 1er bouton
    	public String maMethode1() {
    		...
    	}
     
            // Methode appelée par le 2e bouton
    	public String maMethode2() {
    		...
    	}
    }
    J'espère que c'est plus clair pour toi !

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    j'ai un formulaire avec deux boutons de validation.

    Comment associer une action a chacun d'entre eux ?

    merci
    Donc une action par bouton ???

  16. #16
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Citation Envoyé par quarky Voir le message
    Donc une action par bouton ???
    Oui exactement. Mais le probleme est resolu grace a l'explication tres claire de Gtinaut (merci a lui).

    D'ailleurs ce serait une bonne chose je pense de rajouter cela dans une éventuelle FAQ.

  17. #17
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        <!-- items -->
        <action name="displayItemsAction" class="displayItemsAction">
          <result name="result1" type="chain">result1Action</result>
          <result name="result2" type="chain">result2Action</result>
        </action>
    Mon code s'execute correctement par contre j'ai une Exception qui est levée me dissant que je n'ai pas de displayItemsAction dans mon fichier struts.xml ...

    voici l'exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Action class [displayItemsAction] not found - action
    voici le contenu de mon fichier struts.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
     
    <struts>
        <package name="tutorial" extends="struts-default">
         <action name="Opp" class="tz.test.Operation" >
            <result name="success">result.jsp</result>
        </action>
     
        </package>
    </struts>
    Dois je rajouter quelque chose concernant le displayItemAction ??

    merci

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    Bon, malgré ma grippe je vais essayer d'être clair. Permet Gtinaut que je reprenne ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <s:form action="Opp">
       ...
       <s:submit method="method1" value="M1" />
       <s:submit method="method2" value="M2" />
    </s:form>
    ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <struts>
      <package name="tutorial" extends="struts-default">
        <action name="Opp" class="tz.test.Operation" >
          <result name="resultFromMethod1" type="chain">Opp2</result>
          <result name="resultFromMethod2" type="chain">Opp3</result>
        </action>
      </package>
    </struts>
    ...

    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
     
    public class Opp extends ActionSupport {
            /** pas la peine
            public String execute() {
                    ...
            }*/
     
            // Methode appelée par le 1er bouton
    	public String method1() {
    		return "resultFromMethod1"; // FIXME: use static member instead of... blablabla
    	}
     
            // Methode appelée par le 2e bouton
    	public String method2() {
    		return "resultFromMethod2"; // FIXME: use static member instead of... blablabla
    	}
    }
    Et puisque que dans notre chainage on ne précise pas nom de méthode, on tapera sur execute. En outre, si tu veux forwarder (ce qui est le but il me semble) les champs de ton form de ta JSP -> Opp -> Opp2 ou Opp3 tu doit ajouter les getters setters qui vont biens !

    ?

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

Discussions similaires

  1. deux boutons dans un seul formulaire
    Par balishi dans le forum Langage
    Réponses: 4
    Dernier message: 14/09/2011, 15h25
  2. Réponses: 1
    Dernier message: 30/11/2010, 21h02
  3. Réponses: 12
    Dernier message: 08/11/2007, 20h38
  4. deux boutons dans un formulaire
    Par vanou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 20/06/2006, 08h57
  5. deux boutons dans un formulaire
    Par vanou dans le forum ASP
    Réponses: 5
    Dernier message: 20/06/2006, 08h55

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