Peux-tu montrer le code complet de l'ActionForm MonForm ?
Peux-tu montrer le code complet de l'ActionForm MonForm ?
Struts config
mes actions : editer
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 <form-bean name="MonForm" type="monChemin.MonForm" > </form-bean> <action path="/EditerForm" type="MonChemin.EditerFormAction"> <forward name="ok" path="/CreerForm.jsp" /> </action> <action path="/EnregistrerForm" type="monChemin.EnregistrerFormAction" name="MonForm" scope="session" input="/EditerForm.do" cancellable="true" validate="true"> <forward name="ok" path="/Autre.jsp" /> </action>
action : enregistrer
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 public class EditerFormAction extends Action { public EditerFormAction() { } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // [...] Traitement pour remplir : request.setAttribute("tabDautreChose", autreChose.findAll()); int id = 0; try { id = new Integer(request.getParameter("id")); } catch (NumberFormatException ex) { id = 0; } MonForm form = new MonForm (); if (id != 0)// si on est en modif { //form.set ici pour remplir le form si on est en modif } request.setAttribute("MonForm", form ); String result = "ok"; return mapping.findForward(result); } }
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
26
27
28
29
30
31
32
33
34
35
36 public class EnregistrerFormAction extends Action { public EnregistrerFormAction() { } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { MonForm form = (MonForm ) form; Integer idForm = form.getId(); if ( idForm > 0) // Modification //traitement de la modif (on recupere l'objet en base pour le modifier) else // Création //traitement de la creation (on cree l'objet) //Ensuite on modifie et enregistre l'objet AfficherFormAction afficherform = new AfficherFormAction(); afficherform .execute(mapping, form, request, response); String result = "ok"; return mapping.findForward(result); } }
C'était le code de MonForm que je demandais.
Enfin, en tout cas, il faut enlever ces deux lignes de l'Action EditerFormAction :
et coder plutôt ceci pour récupérer l'ActionForm :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 MonForm form = new MonForm (); request.setAttribute("MonForm", form );
Pour que cela fonctionne, il faut bien sûr ajouter la référence au form-bean MonForm dans le mapping de cette Action :
Code : Sélectionner tout - Visualiser dans une fenêtre à part MonForm form = (MonForm ) form;
et dans la deuxième action, rediriger vers la jsp plutôt que vers l'Action en cas d'erreur de validation :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <action path="/EditerForm" type="MonChemin.EditerFormAction" name="MonForm" scope="session" validate="false"> <forward name="ok" path="/CreerForm.jsp" /> </action>
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <action path="/EnregistrerForm" type="monChemin.EnregistrerFormAction" name="MonForm" scope="session" input="/CreerForm.jsp" cancellable="true" validate="true"> <forward name="ok" path="/Autre.jsp" /> </action>
ça marche effectivement beaucoups mieux de cette façon
ou presque : tu as indiqué
or si je pointe vers ceci plutot que vers mon
Code : Sélectionner tout - Visualiser dans une fenêtre à part input="/CreerForm.jsp"
La page plante et me dit qu'elle ne connait pas les éléments de mon pré remplissage (car l'action qui initialise les listes etc. ne s'est pas déroulé)
Code : Sélectionner tout - Visualiser dans une fenêtre à part input="/EditerForm.do"
Avec mon EditerForm.do
la création est parfaite la session ne revient pas intempestivement quand je veux faire une autre création, mais j'ai un autre problème : quand je veux modifier une entrée : je n'ai plus le préchargement des valeurs de l'entrée : cela fait comme pour une création
Peux-tu montrer comment tu fais ce pré-remplissage ainsi que le code de la jsp ?
pardon pardon j'espere que tu n'a pas encore lu le message d'avant j'avais pas vu j'ai écrasé le MonForm form = (MonForm ) form; apres l'avoir initilisé
je continue a tester mais ça m'a l'air tres bon !!!
C'est ok.
J'essaie de l'adapter a tous mes formulaires !
En tous les cas !!! un grand merci !!!!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager