Bonjour à tous
Voila je suis débutant dans le monde de Struts et j'ai un petit souçis que je ne sais comment résoudre pour créer un formulaire faisant appel à des données stockées en base.![]()
En fait lorsque je clique sur un lien de mon menu principal je dois attérir sur un formulaire qui contient une liste déroulante <option> remplie par des valeurs contenues en base et deux autres champs texte à remplir par l'utilisateur.
Mon probleme est le suivant : lorsque j'utilise la méthode validate dans mon ActionForm pour tester les entrées utilisateur et que je retourne des erreurs l'ActionForm fait un retour direct à la jsp. Or cette jsp n'est plus en mesure de remplir la liste déroulante car elle ne trouve plus le bean (ce qui est logique car celui est géneré dans l'Action).
Voila ma classe Action qui est appellé à partir du menu principal de mon appli et qui permet de génerer ma liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class ModifyDrinkAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Drinks dao = new Drinks(); Collection<Drink> DrinkList = dao.ListDrink(); dao.closeDB(); request.setAttribute("liste", DrinkList); return mapping.findForward("modifylist"); } }
La page jsp de mon formulaire :
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 <html:form action="ModifyDrinkSubmit"> <table width="75%" border="0"> <tr> <td width="15%"><bean:message key="name" /></td> <td><html:select property="drinkName"> <html:options collection="liste" property="drinkName" labelProperty="drinkName" /> </html:select></td> <tr> <tr> <td><bean:message key="price" /></td> <td><html:text property="drinkPrice" /></td> <td><html:errors property="price" /></td> </tr> <tr> <td><bean:message key="description" /></td> <td><html:text property="drinkDescription" /></td> <td><html:errors property="description" /></td> </tr> </table> <p><strong><font size="4"></font></strong></p> <html:submit> <bean:message key="modify_button" /> </html:submit> </html:form>
Ma classe ActionForm avec la methode validate :
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 public class DrinkFormModify extends ActionForm { private static final long serialVersionUID = 1L; String drinkName; String drinkDescription; String drinkPrice; public String getDrinkDescription() { return drinkDescription; } public void setDrinkDescription(String drinkDescription) { this.drinkDescription = drinkDescription; } .... public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if(drinkDescription.equals("")){ errors.add("description", new ActionMessage("errors.description")); } if(drinkPrice.equals("")){ errors.add("price", new ActionMessage("errors.priceempty")); } try{ new Integer(drinkPrice); } catch(NumberFormatException e){ errors.add("price", new ActionMessage("errors.price")); } System.out.println("aaaa"); return errors; } }
J'ai essayé différentes choses mais rien ne marche, peut etre que l'utilisation du plugin Validator changerai qqchose ?
Au passage j'utilise Java 1.5 + Struts 1.2
Si qqun à une idée qu'il ne se prive pas![]()
Merci d'avance
Bon week end
Partager