Bonjour à tous, c'est encore moué
Voici mon petit problème qui va vous paraitre bête, mais pour moi insurmontable
Je suivis le tutoriel de Serge Tahe concernant le développement d'une application web avec Spring MVC. j'ai crée un formulaire avec une liste déroulante qui se charge au lancement de la page jsp avec des données provenant d'une base de donnée Mysql.
Lorsque je navigue vers la page jsp en question, j'obtiens cette erreur là
D'après ce que je comprends il dit qu'il ne sait pas quoi traiter pour effectuer l'itération. Pourtant, j'ai vu dans sur le forum qu'il fallait surcharger la méthode referenceDate. Comme vous l'avez compris je patauge
Code : Sélectionner tout - Visualiser dans une fenêtre à part org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>
le formulaire :
le controlleur :
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
47
48
49
50
51 <%@ page language="java" pageEncoding="ISO-8859-1" contentType="text/html;charset=ISO-8859-1" %> <%@ include file="tagLib.jsp" %> <html> <head> <title>Untitled Document</title> <link href="<%=request.getContextPath()%>/css/editClient.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="container"> <spring:bind path="client"> <c:if test="${status.error}"> <h3>les erreurs suivantes se sont produites :</h3> <ul> <c:forEach items="${status.errorMessages}" var="erreur"> <li><c:out value="${erreur}"/></li> </c:forEach> </ul> <hr> </c:if> </spring:bind> <div id="formAdd"> <form method="post" action="<c:url value="/editClient.html"/>"> <table width="839" border="0"> <tr> <td width="105" class="textColor">Client Name</td> <spring:bind path="client.name"> <td><input type="text" value="${status.value}" name="${status.expression}" size="20"></td> <td width="181" class="error">${status.errorMessage}</td> </spring:bind> </tr> <tr> <td class="textColor">Level</td> <!--<td><select name="level"></select></td>--> <td><select> <c:forEach items="${floors}" var="floor"> <option value="<c:out value='${floor.numberOfFloor}'/>"><c:out value='${floor.numberOfFloor}'/></option> </c:forEach> </select></td> </tr> </table> <input type="hidden" value="${client.idClient}" name="idClient"/> <div id="buttonSave"> <input type="submit" name="save" value=" " class="buttonSave"/> </div> </form> </div> </div> </body> </html>
une partie du fichier de configuration spring
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 import java.util.*; import webapp.clients.dao.*; import webapp.clients.entites.*; import webapp.clients.service.*; import javax.servlet.http.*; import org.springframework.validation.*; import org.springframework.web.bind.*; import org.springframework.web.servlet.*; import org.springframework.web.servlet.mvc.*; public class EditClient extends SimpleFormController { // service IService service; public IService getService() { return service; } public void setService(IService service) { this.service = service; } // enregistrement d'éditeurs de propriétés // préparation [Personne] à afficher protected Object formBackingObject(HttpServletRequest request) { // on récupère l'id du client int id = ServletRequestUtils.getIntParameter(request, "idClient", -1); // ajout ou modification ? Client client = null; if (id != -1) { // modification - on récupère le client à modifier client = service.getOne(id); }else{ // ajout - on crée un client vide client = new Client(); client.setIdClient(-1); } // on rend l'objet [Personne] return client; } //initialisation des liste protected Map referenceData(HttpServletRequest request){ // le dictionnaire Map data=new HashMap(); // les options du combo data.put("floors",service.getFloor()); return data; } // exécution de la commande protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception { // sauvegarde du client ajouté ou modifié Client client = (Client) command; int idClient = client.getIdClient(); try { // sauvegarde du client service.saveOne(client); // on redirige vers la liste des clients return new ModelAndView("reussis"); } catch (DaoException ex) { // on note l'erreur String message=idClient==-1 ? "client.ajout.echec" : "client.modification.echec"; errors.reject(message,new Object[]{ex.getMessage()},"Echec de la mise à jour: {0}"); // on réaffiche le formulaire return showForm(request,response, errors); } } }
Merci d'avance à tous, car toute aide est la bienvenue
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 <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/editClient.html">Clients.EditController</prop> </props> </property> </bean> <bean id="Clients.EditController" class="webapp.clients.web.EditClient"> <property name="service"> <ref bean="service"/> </property> <property name="sessionForm"> <value>true</value> </property> <property name="commandName"> <value>client</value> </property> <property name="formView"> <value>editClient</value> </property> <property name="validator"> <ref bean="Clients.Validator"/> </property> <property name="successView"> <value>reussis</value> </property> </bean> <!-- le validateur --> <bean id="Clients.Validator" class="webapp.clients.web.ValidateClient"/>![]()
Partager