Bonsoir,
Je travaille sur un projet web JEE, en utilisant page .jsp, servlet, couche service et DAO Hibernate. J'aimerai récupérer les risques associés à un danger. il y a une classe risque, une classe danger, et une autre classe "engendrer" qui contient l'association des risques(0,n)->danger (0-n).
L'utilisateur tape le nom du danger pour faire une recherche, le résultat de la recherche devra être les risques associés à ce danger.
voila donc le code, j'ai une erreur de Cast et je ne comprend pas la raison, je pense que l'erreur réside dans la requete DAO et au niveaux des classes.
DANGERDAOHibernate
DangerServices
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 public class DangerDAOHibernate implements DangerDAO { public List findDangerRisques(int id) { Session s = HibernateUtil.getSession(); List list = s .createQuery( "from Engendrer s, Risque risq where s.id_danger= :id_danger and s.id_risq = risq.id_ris") .setInteger("id_danger", id).list(); /* * Engendrer pers = (Engendrer) q.uniqueResult(); = * s.createQuery("from risque risq where risq.id_risq = :id_risq" * ).list(); */ s.close(); return list; } public Danger findByNom(String nom) { Session s = HibernateUtil.getSession(); Query q = s.createQuery("from Danger risq where risq.nom= :nom") .setString("nom", nom); Danger pers = (Danger) q.uniqueResult(); s.close(); return pers; } }
servlet
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 public class DangerServices { private DangerDAO dDAO = new DangerDAOHibernate(); public Danger checkDangerNom(String nom) throws RechercheExceptions { Danger f = dDAO.findByNom(nom); // Si le titre correspond à une Formation, on vérifie le titre associé if (f != null) if (f.getnom().equals(nom)) return f; else throw new RechercheExceptions( "Aucun résultat correspondant au titre"); else throw new RechercheExceptions("Aucune formation disponible"); } /* * public List getRisqueD(int id) { List l1 = dDAO.findDangerRisques(id); * return l1; } */ //pour récuperer la liste des identifiants risques associé à id_danger public Risque getRisqueD(int i, int id) { List l1 = dDAO.findDangerRisques(id); Risque risque = (Risque) l1.get(i); return risque; } }
la page du résultat recherche:
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 public class RisquesDanger extends HttpServlet { private static final long serialVersionUID = 1L; // Si on tente d'accéder directement à la Servlet, on redirige vers // index.jsp protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { getServletContext().getRequestDispatcher("/RechercheDanger.jsp") .forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Récupération des données du formulaire d'index.jsp String nom = request.getParameter("titreSaisi"); System.out.println("titre" + nom); // Si tous les champs du formulaire ont été remplis if (!"".equals(nom)) { DangerServices DServ = new DangerServices(); System.out.println("ok"); try { // Si le service valide l'utilisateur if (DServ.checkDangerNom(nom) != null) { Danger f = DServ.checkDangerNom(nom); int id_danger = f.getId_danger(); request.setAttribute("id_danger", id_danger); System.out.println("id " + id_danger); System.out.println("9rit titre"); getServletContext().getRequestDispatcher( "/RisqueDanger.jsp").forward(request, response); } } catch (RechercheExceptions e) { // Sinon, renvoi vers le formulaire avec le message d'erreur // retourné par le service request.setAttribute("erreur", e.getMessage()); getServletContext() .getRequestDispatcher("/RechercheRisque.jsp").forward( request, response); } } // Si le formulaire est incomplet, renvoi vers le formulaire avec un // message d'erreur else { request.setAttribute("erreur", "Saisies insuffisantes"); getServletContext().getRequestDispatcher("/RechercheRisque.jsp") .forward(request, response); } } }
erreur:
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 <div class="art-sheet clearfix"> <div class="art-layout-wrapper"> <div class="art-content-layout"> <div class="art-content-layout-row"> <div class="art-layout-cell art-content"><article class="art-post art-article"> <div class="art-postcontent art-postcontent-0 clearfix"><div class="art-content-layout"> <div class="art-content-layout-row"> <h2 class="art-postheader">Les risques du danger</h2> <div id="content"> <div class="flower"></div> <h1 class="title"><a href="#">Liste des Risques</a></h1> <form action="Client_Servlet" ></form><div style="width: 100%;" id="tableWrapper"><table id="vsTable"><tbody><tr><td style="width: 10%;" class="title"><div>Reference</div></td><td style="width: 10%;" class="title"> <div>Nom</div></td><td style="width: 10%;" class="title"><div>Type</div></td><td style="width: 10%;" class="title"><div>Materiel</div></td><td style="width: 10%;" class="title"><div>Facteur aggravant</div></td><td style="width: 10%;" class="title"><div>conséquence</div></td></tr> <%Integer id_danger = (Integer) request.getAttribute("id_danger"); DangerDAO cd=new DangerDAOHibernate(); List l1=cd.findDangerRisques(id_danger); DangerServices DServ = new DangerServices(); for(int i=0;i<l1.size();i++) { Risque c1 = DServ.getRisqueD(i, id_danger); out.print("<tr class='second'><td class='text' style='width: 10%;'><div class=''>"+c1.getId_ris()+"</div></td><td class='text' style='width: 10%;'><div class=''>"+c1.getNom()+"</div></td><td class='text' style='width: 10%;'><div class=''>"+c1.getType()+"</div></td><td class='text' style='width: 10%;'><div class=''>"+c1.getGravite()+"</div></td><td class='text' style='width: 10%;'><div class=''>"+c1.getProbabilite()+"</div></td><td class='text' style='width: 10%;'><div class=''>"+c1.getConseq()+"</div></tr>"); } %> </tbody></table></div> </div> </div> </div>
Danger
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 juil. 31, 2013 6:42:58 PM org.apache.catalina.core.ApplicationDispatcher invoke Grave: "Servlet.service()" pour la servlet jsp a lancé une exception java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to modele.Risque at services.DangerServices.getRisqueD(DangerServices.java:38) at org.apache.jsp.RisqueDanger_jsp._jspService(RisqueDanger_jsp.java:146) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:690) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:477) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329) at servlets.RisquesDanger.doPost(RisquesDanger.java:49) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) juil. 31, 2013 6:42:59 PM org.apache.catalina.core.StandardWrapperValve invoke Grave: Servlet.service() for servlet [RisquesDanger] in context with path [/GestionSec] threw exception [An exception occurred processing JSP page /RisqueDanger.jsp at line 86 83: 84: for(int i=0;i<l1.size();i++) 85: { 86: Risque c1 = DServ.getRisqueD(i, id_danger); 87: out.print("<tr class='second'><td class='text' style='width: 10%;'><div class=''>"+c1.getId_ris()+"</div></td><td class='text' style='width: 10%;'><div class=''>"+c1.getNom()+"</div></td><td class='text' style='width: 10%;'><div class=''>"+c1.getType()+"</div></td><td class='text' style='width: 10%;'><div class=''>"+c1.getGravite()+"</div></td><td class='text' style='width: 10%;'><div class=''>"+c1.getProbabilite()+"</div></td><td class='text' style='width: 10%;'><div class=''>"+c1.getConseq()+"</div></tr>"); 88: } 89: %> Stacktrace:] with root cause java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to modele.Risque at services.DangerServices.getRisqueD(DangerServices.java:38) at org.apache.jsp.RisqueDanger_jsp._jspService(RisqueDanger_jsp.java:146) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:690) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:477) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329) at servlets.RisquesDanger.doPost(RisquesDanger.java:49) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
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 @Entity @Table(name = "danger") public class Danger { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "ID_DANGER") private int id_danger; @Column(name = "descritption") private String description; @Column(name = "gravite_risque") private String gravite_risque; @Column(name = "probabilite_risque") private String probabilite_risque; @Column(name = "source") private String source; @Column(name = "nature") private String nature; @Column(name = "consequence") private String consequence; @Column(name = "prticularite") private String particularite; @Column(name = "nom") private String nom; @Column(name = "famille") private String famille;
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 @Entity @Table(name = "risque") public class Risque { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "ID_RISQ") private int id_ris; @Column(name = "nom") private String nom; @Column(name = "type") private String type; @Column(name = "description") private String description; @Column(name = "departement") private String departement; @Column(name = "gravite") private int gravite; @Column(name = "probabilite") private int probabilite; @Column(name = "consequence") private String conseq; public int getId_ris() { return id_ris; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 @Entity @Table(name = "engendrer") public class Engendrer { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") private int id; @Column(name = "id_risq") private int id_risq; @Column(name = "id_danger") private int id_danger;
Partager