Alors voilà:
J'arrive enfin à passer en page 3 de mon framework:
j'ai une premiere méthode dans ma servet qui utilise un resultset.
Ce même RS est utilisé dans une deuxieme méthode de ma servlet .
Je l'ai donc (le RS) rendu private.
Ce que j'essaye de tester pour le moment c'est de voir si le Rs est bien conservé d'une méthode à l'autre .
En effet, car les requêtes faites dans ma deuxieme méthode ne sont pas réalisées.
Voici la méthode 1dans ma servlet:
Donc le Rs est bien passé (est bien parsé) dans la page réponse 1.
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 void doInterrogationFormulaire(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException, SQLException, Exception { // on récupère les paramètres String nomCentre = (String) request.getParameter("nomCentre"); String NEtude = (String) request.getParameter("NEtude"); //puis on le stocke dans la session HttpSession session = request.getSession(true); session.setAttribute("nomCentre", nomCentre); session.setAttribute("NEtude", NEtude); Connexion com = new Connexion(); try{ String queryidPrelevement="SELECT idPrelevement FROM Etabl_Prlvmt where NEtude='"+NEtude+"'"; resultSetIDPrelevement=com.ConnectAndQuestion(queryidPrelevement); if(resultSetIDPrelevement.next()){ resultSetIDPrelevement.beforeFirst(); request.setAttribute("resultSetIDPrelevement", resultSetIDPrelevement); getServletContext().getRequestDispatcher((String) params.get("urlReponse")).forward( request, response); return; } else { getServletContext().getRequestDispatcher((String) params.get("urlFormulaire")).forward( request, response); com.close(); return; } } catch(Exception ex) { ex.printStackTrace(); System.err.println("\n*** SQLException caught in main()"); getServletContext().getRequestDispatcher((String) params.get("urlFormulaire")).forward( request, response); return; } }
Voici ce qu'il se passe dans ma méthode 2 (appelée à partir de la page réponse 1):
Je me suis dit : "si les requêtes ne sont pas exécutées donc le RS (condition while en rouge) n'est pas transmis ou exporté de manière interne .
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 void dotestAffichage(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException, SQLException, Exception { ArrayList<String> listIdPrelevement = null; Connexion updatePrlvmt= new Connexion(); try{ //serveur,login,pwd,database updatePrlvmt.loadDriverAndConnect("127.0.0.1","3306","root","root",""); int k=1; while (resultSetIDPrelevement.next()){ String idPrelevement = resultSetIDPrelevement.getString("idPrelevement"); listIdPrelevement.add(idPrelevement); if (request.getParameter("choix"+k) !="Vl"){ String champModalite=(String) request.getParameter("modalite"+k); String champPoss1Exutoire=(String) request.getParameter("Poss1exutoire"+k); String champPoss2Exutoire=(String) request.getParameter("Poss2exutoire"+k); String champPoss3Exutoire=(String) request.getParameter("Poss3exutoire"+k); String champExutoire = null; if (champPoss2Exutoire!="null" && champPoss3Exutoire!="null"){ champExutoire=champPoss1Exutoire+"+"+champPoss2Exutoire+"+"+champPoss3Exutoire; } else if (champPoss2Exutoire!="null" && champPoss3Exutoire.equals("null")){ champExutoire=champPoss1Exutoire+"+"+champPoss2Exutoire; } else if (champPoss2Exutoire.equals("null") && champPoss3Exutoire!="null"){ champExutoire=champPoss1Exutoire+"+"+champPoss3Exutoire; } else { champExutoire=champPoss1Exutoire; } String queryUpdate="UPDATE PrelevLEG SET Modalite='"+champModalite + "',Exutoire='"+champExutoire + "',Temp='null',TempMax='null',Heure='00:00' WHERE idPrelevement='"+idPrelevement + "';"; updatePrlvmt.execute(queryUpdate); } if (request.getParameter("choix"+k) !="Ef"){ String queryUpdate="DELETE FROM PrelevLEG where idPrelevement='"+idPrelevement +"'"; updatePrlvmt.execute(queryUpdate); } } }catch(Exception ex) { ex.printStackTrace(); System.err.println("\n*** SQLException caught in main()"); } request.setAttribute("listIdPrelevement",listIdPrelevement); request.setAttribute("urlAction", (String) params.get("urlControleur")); getServletContext().getRequestDispatcher((String) params.get("urlReponseBis")).forward(request, response); return; }
Cependant, je ne passe pas dans le catch et la page réponse 2 est bien rendue.
J'ai donc essayé d'afficher mon Rs dans la page 2 or :
Mon RS s'appelle resultSetIDPrelevement et je lui demande donc les idPrelevements
dans le catalina.out:
J'ai pensé que je m'y suis mal prise. j'ai donc essayé une autre technique:
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 *** SQLException caught in main() org.apache.jasper.JasperException: Exception in JSP: /WEB-INF/JSP/LEG/Prlvmnt/respFichePrlvLEGactual.jsp:30 27: L'actualisation a bien été effectuée : 28: 29: <% 30: while (resultSetIDPrelevement.next()){ 31: String idPrelevement = resultSetIDPrelevement.getString("idPrelevement"); 32: %> 33: <tr> Stacktrace: at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
dans ma deuxieme méthode dans le servlet comme le Rs ne semble pas vide je vais rajouter à chaque tour de boucle mon idPrelevement dans un Arraylist et dans la page réponse 2 j'ai fait un iterator
Là même message d'erreur:
J'ai de la ressource et de l'entêtement , j'ai surement mal fait mon iterator :
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 Connected to : jdbc:mysql://127.0.0.1:3306/BIOTECH org.apache.jasper.JasperException: Exception in JSP: /WEB-INF/JSP/LEG/Prlvmnt/respFichePrlvLEGactual.jsp:29 26: <tr> 27: L'actualisation a bien été effectuée : 28: </tr> 29: <%Iterator itIDPrelevINreponse=listIdPrelevement.iterator(); 30: while(itIDPrelevINreponse.hasNext()){ 31: String idPrelevement= (String) itIDPrelevINreponse.next();%> 32: Stacktrace: at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
j'ai essayé toutes les astuces possibles mais rien n'y fait j'ai toujours le même "org.apache.jasper.JasperException".
Une idée ? et surtout comment avoir plus de renseignements sur l'erreur qu'un "org.apache.jasper.JasperException: Exception in JSP"
Merci d'avance de votre attention
Partager