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 !!!!
Partager