j'ai un formulaire avec deux boutons de validation.
Comment associer une action a chacun d'entre eux ?
merci
j'ai un formulaire avec deux boutons de validation.
Comment associer une action a chacun d'entre eux ?
merci
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.
oula du javascript !
Suis - je obligé d'en utiliser ?
En effet je vois pas trop comment traduire cela en Struts 2 ...
Sans javascript mais encore en Struts 1
http://java.developpez.com/faq/strut...DispatchAction
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
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"/>
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
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/
Mais en suite dans mon struts.xml, comment est ce que j'associe chaque action?
merci
Tes deux méthodes retournent chacune un result qui permet de chainer son action.
Par contre, il ne faut oublier d'ajouter les getter/setter des dans chaque actions afin de transférer les valeurs des champs.
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>
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
t'es pas obligé de créer 2 classes action :
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part <action name="monAction" class="mon.package.maClasse" method="maMethode">
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
Bonjour !
Voici un petit descriptif de ce que tu dois avoir dans tes différents fichiers :
Dans ton fichier jsp :
Dans ton struts.xml :
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 ta class :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <action name="monAction" class="nomDeTaClass"> <result name="success">...</result> </action>
J'espère que c'est plus clair pour toi !
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() { ... } }
Donc une action par bouton ???j'ai un formulaire avec deux boutons de validation.
Comment associer une action a chacun d'entre eux ?
merci
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 ...
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>
voici l'exception :
voici le contenu de mon fichier struts.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Action class [displayItemsAction] not found - action
Dois je rajouter quelque chose concernant le displayItemAction ??
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>
merci
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>
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 !
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 } }
?
Partager