Bonjour,
Je débute avec Spring et j'essaie de comprendre un peu son fonctionnement. Ben voilà, j'ai décidé de suivre le tuto de krams915 : et d'y ajouter quelques fonctionnalités. Je souhaite ajouter des visites aux personnes de la liste de l'application, j'ai pu créer les entity ...sauf que lorsque je veux les visites par personnes la page jsp n'affiche rien, et meme pas une erreur.
Il me semble que le probleme se pose avec la fonction getVisiteByUser(Integer personId) de VisiteService.java et la fonction @RequestMapping(value = "/visite/visitebyuser", method = RequestMethod.GET) public String getAllVisiteByUser .... du controller
Si quelqu'un pouvait m'aider, please !
Mon fichier personspage.jsp :
Entity Person.java
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 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>Persons</h1> <c:url var="mainUrl" value="/krams/main/persons" /> <c:url var="mainUrlMoney" value="/krams/main/personsListMoney" /> <c:url var="mainUrlMoneyASC" value="/krams/main/personsListMoneyAsc" /> <c:url var="mainUrlName" value="/krams/main/personsListName"/> <p> <a href="${mainUrl}">Liste normale</a> <a href="${mainUrlMoneyASC}">Liste triée par money ASC</a> <a href="${mainUrlMoney}">Liste triée par money DESC</a> <a href="${mainUrlName}">Liste triée par Nom</a> </p> <c:url var="addUrl" value="/krams/main/persons/add" /> <c:url var="listallvisite" value="/krams/main/visites" /> <table style="border: 1px solid; width: 500px; text-align:center"> <thead style="background:#fcf"> <tr> <th>First Name</th> <th>Last Name</th> <th>Money</th> <th>Adresse</th> <th>code postal</th> <th>ville</th> <th colspan="6"></th> </tr> </thead> <p><a href="${listallvisite}">Voir toutes les visites</a></p> <tbody> <c:forEach items="${persons}" var="person"> <c:url var="editUrl" value="/krams/main/persons/edit?id=${person.id}" /> <c:url var="deleteUrl" value="/krams/main/persons/delete?id=${person.id}" /> <c:url var="listvisitebyuser" value="/krams/main/visite/visitebyuser?id=${person.id}" /> <tr> <td><c:out value="${person.firstName}" /></td> <td><c:out value="${person.lastName}" /></td> <td><c:out value="${person.money}" /></td> <td><c:out value="${person.adresse}" /></td> <td><c:out value="${person.cp}" /></td> <td><c:out value="${person.ville}" /></td> <td><a href="${editUrl}">Edit</a></td> <td><a href="${deleteUrl}">Delete</a></td> <td><a href="${addUrl}">Add</a></td> <td><a href="${listvisitebyuser}">Voir ses visites</a></td> </tr> </c:forEach> </tbody> </table> <c:if test="${empty persons}"> There are currently no persons in the list. <a href="${addUrl}">Add</a> a person. </c:if> </body> </html>
Entity Visite.java
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125 package org.krams.tutorial.domain; import java.io.Serializable; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.JoinColumn; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinTable; import javax.persistence.OneToMany; import javax.persistence.Table; /** * For a complete reference see * <a href="http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/"> * Hibernate Annotations Communit Documentations</a> */ @Entity @Table(name = "PERSON") public class Person implements Serializable { private static final long serialVersionUID = -5527566248002296042L; @Id @Column(name = "ID") @GeneratedValue private Integer id; @Column(name = "FIRST_NAME") private String firstName; @Column(name = "LAST_NAME") private String lastName; @Column(name = "MONEY") private Double money; @Column(name = "ADRESSE") private String adresse; @Column(name = "CP") private String cp; @Column(name = "VILLE") private String ville; @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER) @JoinTable( name="PersonVisites", joinColumns = @JoinColumn( name="PERSON_ID"), inverseJoinColumns = @JoinColumn( name="VISITE_ID") ) private Set<Visite> visites; public Set<Visite> getVisites() { return visites; } public void setVisites(Set<Visite> visites) { this.visites = visites; } public String getCp() { return cp; } public void setCp(String cp) { this.cp = cp; } public String getVille() { return ville; } public void setVille(String ville) { this.ville = ville; } public String getAdresse() { return adresse; } public void setAdresse(String adresse) { this.adresse = adresse; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public Double getMoney() { return money; } public void setMoney(Double money) { this.money = money; } }
Service PersonService.java
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 .... .... @Entity @Table(name = "VISITE") public class Visite implements Serializable { private static final long serialVersionUID = -5527566248002296042L; @Id @Column(name = "ID_VISITE") @GeneratedValue private Integer id_visite; @Column(name = "LIEU_VISITE") private String lieu_visite; @Column(name = "DESCRIPTION_VISITE") private String description_visite; public Integer getId_visite() { return id_visite; } public void setId_visite(Integer id_visite) { this.id_visite = id_visite; } public String getLieu_visite() { return lieu_visite; } public void setLieu_visite(String lieu_visite) { this.lieu_visite = lieu_visite; } public String getDescription_visite() { return description_visite; } public void setDescription_visite(String description_visite) { this.description_visite = description_visite; } }
Service VisiteService.java
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171 package org.krams.tutorial.service; import java.util.List; import javax.annotation.Resource; import org.apache.log4j.Logger; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.krams.tutorial.domain.Person; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * Service for processing Persons * */ @Service("personService") @Transactional public class PersonService { protected static Logger logger = Logger.getLogger("service"); @Resource(name="sessionFactory") private SessionFactory sessionFactory; /** * Retrieves all persons * * @return a list of persons */ public List<Person> getAll() { logger.debug("Retrieving all persons"); // Retrieve session from Hibernate Session session = sessionFactory.getCurrentSession(); // Create a Hibernate query (HQL) Query query = session.createQuery("FROM Person"); // Retrieve all return query.list(); } /** * Retrieves all persons Order by Money * * @return a list of persons */ public List<Person> getAllByMoney() { logger.debug("Retrieving all persons ORDER BY MONEY"); // Retrieve session from Hibernate Session session = sessionFactory.getCurrentSession(); // Create a Hibernate query (HQL) Query query = session.createQuery("FROM Person order by MONEY DESC"); // Retrieve all return query.list(); } /** * Retrieves all persons Order by Money * * @return a list of persons */ public List<Person> getAllByMoneyAsc() { logger.debug("Retrieving all persons ORDER BY MONEY"); // Retrieve session from Hibernate Session session = sessionFactory.getCurrentSession(); // Create a Hibernate query (HQL) Query query = session.createQuery("FROM Person order by MONEY ASC"); // Retrieve all return query.list(); } /** * Retrieves all persons Order by Nom * * @return a list of persons */ public List<Person> getAllByNameAsc() { logger.debug("Retrieving all persons ORDER BY NAME"); // Retrieve session from Hibernate Session session = sessionFactory.getCurrentSession(); // Create a Hibernate query (HQL) Query query = session.createQuery("FROM Person order by FIRST_NAME ASC, LAST_NAME"); // Retrieve all return query.list(); } /** * Retrieves a single person */ public Person get( Integer id ) { // Retrieve session from Hibernate Session session = sessionFactory.getCurrentSession(); // Retrieve existing person first Person person = (Person) session.get(Person.class, id); return person; } /** * Adds a new person */ public void add(Person person) { logger.debug("Adding new person"); // Retrieve session from Hibernate Session session = sessionFactory.getCurrentSession(); // Save session.save(person); } /** * Deletes an existing person * @param id the id of the existing person */ public void delete(Integer id) { logger.debug("Deleting existing person"); // Retrieve session from Hibernate Session session = sessionFactory.getCurrentSession(); // Retrieve existing person first Person person = (Person) session.get(Person.class, id); // Delete session.delete(person); } /** * Edits an existing person */ public void edit(Person person) { logger.debug("Editing existing person"); // Retrieve session from Hibernate Session session = sessionFactory.getCurrentSession(); // Retrieve existing person via id Person existingPerson = (Person) session.get(Person.class, person.getId()); // Assign updated values to this person existingPerson.setFirstName(person.getFirstName()); existingPerson.setLastName(person.getLastName()); existingPerson.setMoney(person.getMoney()); existingPerson.setAdresse(person.getAdresse()); existingPerson.setCp(person.getCp()); existingPerson.setVille(person.getVille()); // Save updates session.save(existingPerson); } }
Le controller :
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124 package org.krams.tutorial.service; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import org.apache.log4j.Logger; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.krams.tutorial.domain.Person; import org.krams.tutorial.domain.Visite; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * Service for processing Persons * */ @Service("visiteService") @Transactional public class VisiteService { protected static Logger logger = Logger.getLogger("visite"); @Resource(name="sessionFactory") private SessionFactory sessionFactory; /** * Retrieves all visites * * @return a list of visite */ public List<Visite> getAll() { logger.debug("la fonction GetALL avec parametre"); // Retrieve session from Hibernate Session session = sessionFactory.getCurrentSession(); // Create a Hibernate query (HQL) /*Query query = session.createSQLQuery("SELECT * FROM PERSON as P, PERSON_VISITE as PV, VISITE as V, WHERE P.ID = PV.PERSON_ID AND PV.visites_ID_VISITE = V.ID_VISITE");*/ Query query = session.createQuery("FROM Visite"); // Retrieve all return query.list(); } /** * Retrieves a single visite */ public Visite get( Integer id ) { // Retrieve session from Hibernate Session session = sessionFactory.getCurrentSession(); // Retrieve existing person first Visite visite = (Visite) session.get(Visite.class, id); return visite; } /** * Adds a new visite */ public void add(Visite visite) { logger.debug("Adding new visite"); // Retrieve session from Hibernate Session session = sessionFactory.getCurrentSession(); // Save session.save(visite); } /** * Deletes an existing person * @param id the id of the existing person */ public void delete(Integer id) { logger.debug("Deleting existing visite"); // Retrieve session from Hibernate Session session = sessionFactory.getCurrentSession(); // Retrieve existing person first Visite visite = (Visite) session.get(Visite.class, id); // Delete session.delete(visite); } /** * Edits an existing visite */ public void edit(Visite visite) { logger.debug("Editing existing visite"); // Retrieve session from Hibernate Session session = sessionFactory.getCurrentSession(); // Retrieve existing person via id Visite existingVisite = (Visite) session.get(Visite.class, visite.getId_visite()); // Assign updated values to this person existingVisite.setDescription_visite(visite.getDescription_visite()); existingVisite.setLieu_visite(visite.getLieu_visite()); // Save updates session.save(existingVisite); } public List<Visite> getVisiteByUser(Integer personId) { logger.debug("Retrieving all visites"); // Retrieve session from Hibernate Session session = sessionFactory.getCurrentSession(); // Create a Hibernate query (HQL) Query query = session.createQuery("FROM Person as p WHERE p.id="+personId); Person person = (Person) query.uniqueResult(); // Retrieve all return query.list(); //return new ArrayList<Visite>(person.getVisites()); } }
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266 package org.krams.tutorial.controller; import java.util.List; import javax.annotation.Resource; import org.apache.log4j.Logger; import org.krams.*; import org.krams.tutorial.domain.Person; import org.krams.tutorial.domain.Visite; import org.krams.tutorial.service.PersonService; import org.krams.tutorial.service.VisiteService; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; /** * Handles and retrieves person request */ @Controller @RequestMapping("/main") public class MainController { protected static Logger logger = Logger.getLogger("controller"); @Resource(name="personService") private PersonService personService; @Resource (name="visiteService") private VisiteService visiteService; /** * Handles and retrieves all persons and show it in a JSP page * * @return the name of the JSP page */ @RequestMapping(value = "/persons", method = RequestMethod.GET) public String getPersons(Model model) { logger.debug("Received request to show all persons"); // Retrieve all persons by delegating the call to PersonService List<Person> persons = personService.getAll(); // Attach persons to the Model model.addAttribute("persons", persons); // This will resolve to /WEB-INF/jsp/personspage.jsp return "personspage"; } /** * Handles and retrieves all visites and show it in a JSP page * * @return the name of the JSP page */ @RequestMapping(value = "/visites", method = RequestMethod.GET) public String getVisitesAll(Model model) { logger.debug("AFFICHE TOUTE lES PERSONNES :: getAll()"); // Retrieve all persons by delegating the call to PersonService List<Visite> visites = visiteService.getAll(); // Attach visite to the Model model.addAttribute("visites", visites); // This will resolve to /WEB-INF/jsp/visitepage.jsp return "/visite/visitepage"; } /** * Affiche les visites de chaque user * * @return the name of the JSP page */ @RequestMapping(value = "/visite/visitebyuser", method = RequestMethod.GET) public String getAllVisiteByUser(@RequestParam(value="id", required=true) Integer id, Model model) { logger.debug("Visite by user"); // Retrieve existing Person and add to model // This is the formBackingOBject List<Visite> visites = visiteService.getVisiteByUser(id); //model.addAttribute("visites", visiteService.getVisiteByUser(id)); model.addAllAttributes(visites); // This will resolve to /WEB-INF/jsp/editpage.jsp return "/visite/visitepagebyuser"; } /** * Handles and retrieves all persons and show it in a JSP page * * @return the name of the JSP page */ @RequestMapping(value = "/personsListMoney", method = RequestMethod.GET) public String getListPersons(Model model) { logger.debug("Received request to show all persons"); // Retrieve all persons by delegating the call to PersonService List<Person> persons = personService.getAllByMoney(); // Attach persons to the Model model.addAttribute("persons", persons); // This will resolve to /WEB-INF/jsp/personspage.jsp return "personspage"; } /** * Affiche la liste des personnes triés par money * * @return the name of the JSP page */ @RequestMapping(value = "/personsListMoneyAsc", method = RequestMethod.GET) public String getListPersonsMoneyAsc(Model model) { logger.debug("Received request to show all persons"); // Retrieve all persons by delegating the call to PersonService List<Person> persons = personService.getAllByMoneyAsc(); // Attach persons to the Model model.addAttribute("persons", persons); // This will resolve to /WEB-INF/jsp/personspage.jsp return "personspage"; } /** * Handles and retrieves all persons ORBER BY NAME and show it in a JSP page * * @return the name of the JSP page */ @RequestMapping(value = "/personsListName", method = RequestMethod.GET) public String getListPersonsByName(Model model) { logger.debug("Received request to show all persons ORDER BY NAME"); // Retrieve all persons by delegating the call to PersonService List<Person> persons = personService.getAllByNameAsc(); // Attach persons to the Model model.addAttribute("persons", persons); // This will resolve to /WEB-INF/jsp/personspage.jsp return "personspage"; } /** * Retrieves the add page * * @return the name of the JSP page */ @RequestMapping(value = "/persons/add", method = RequestMethod.GET) public String getAdd(Model model) { logger.debug("Received request to show add page"); // Create new Person and add to model // This is the formBackingOBject model.addAttribute("personAttribute", new Person()); // This will resolve to /WEB-INF/jsp/addpage.jsp return "addpage"; } /** * Adds a new person by delegating the processing to PersonService. * Displays a confirmation JSP page * * @return the name of the JSP page */ @RequestMapping(value = "/persons/add", method = RequestMethod.POST) public String add(@ModelAttribute("personAttribute") Person person) { logger.debug("Received request to add new person"); // The "personAttribute" model has been passed to the controller from the JSP // We use the name "personAttribute" because the JSP uses that name // Call PersonService to do the actual adding personService.add(person); // This will resolve to /WEB-INF/jsp/addedpage.jsp return "addedpage"; } /** * Deletes an existing person by delegating the processing to PersonService. * Displays a confirmation JSP page * * @return the name of the JSP page */ @RequestMapping(value = "/persons/delete", method = RequestMethod.GET) public String delete(@RequestParam(value="id", required=true) Integer id, Model model) { logger.debug("Received request to delete existing person"); // Call PersonService to do the actual deleting personService.delete(id); // Add id reference to Model model.addAttribute("id", id); // This will resolve to /WEB-INF/jsp/deletedpage.jsp return "deletedpage"; } /** * Retrieves the edit page * * @return the name of the JSP page */ @RequestMapping(value = "/persons/edit", method = RequestMethod.GET) public String getEdit(@RequestParam(value="id", required=true) Integer id, Model model) { logger.debug("Received request to show edit page"); // Retrieve existing Person and add to model // This is the formBackingOBject model.addAttribute("personAttribute", personService.get(id)); // This will resolve to /WEB-INF/jsp/editpage.jsp return "editpage"; } /** * Edits an existing person by delegating the processing to PersonService. * Displays a confirmation JSP page * * @return the name of the JSP page */ @RequestMapping(value = "/persons/edit", method = RequestMethod.POST) public String saveEdit(@ModelAttribute("personAttribute") Person person, @RequestParam(value="id", required=true) Integer id, Model model) { logger.debug("Received request to update person"); // The "personAttribute" model has been passed to the controller from the JSP // We use the name "personAttribute" because the JSP uses that name // We manually assign the id because we disabled it in the JSP page // When a field is disabled it will not be included in the ModelAttribute person.setId(id); // Delegate to PersonService for editing personService.edit(person); // Add id reference to Model model.addAttribute("id", id); // This will resolve to /WEB-INF/jsp/editedpage.jsp return "editedpage"; } }
Partager