Bonjour,
J'ai une application web dont l'architecture est un peu spéciale : des pages jsp qui communique avec une base de données grâce à des classes java dans un DAO.
J'utilise très peu de servlets.
Je dois afficher dans ma page jsp une liste d'objet venant de la base de données, mais cette liste étant assez longue, je dois la paginer.
Comme je ne peux pas faire de "LIMIT" dans mon sql, j'ai fait au plus simple et je ne prends que 500 résultats, que je mets dans une liste d'objet.
Mon problème est donc pour moi de trouver une façon simple de paginer cette liste d'objet.
J'ai trouvé comme solution de mettre cette liste dans la session pour y avoir accès depuis la jsp mais ça ne fonctionne pas. A chaque fois, quand je teste si j'ai cette liste dans la session, elle est à null.
Je mets mon bout de code pour que ce soit un peu plus parlant :
dans ma jsp :
Dans mon DAO (code très simplifié pour ne pas encombrer) :
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 M24HistAdmService M24Service = new M24HistAdmServiceImpl(); List<M24HistoryAdmission> M24List = new ArrayList<M24HistoryAdmission>(); if(request.getSession().getAttribute("M24List") == null) { System.out.println("Objet existe dans la session"); request.getSession().setAttribute("status", status); request.getSession().setAttribute("delay", delayForm); request.getSession().setAttribute("year", year); request.getSession().setAttribute("month", month); request.getSession().setAttribute("day", day); M24List = M24Service.getM24HistoryAdmission(con, delay, delay2, Integer.parseInt(bureau), status, inss, currentdate, Integer.parseInt(Lang), action, request); }else{ System.out.println("Objet n'existe pas dans la session"+" " +request.getSession().getAttribute("status") +" "+request.getSession().getAttribute("delay") +" "+request.getSession().getAttribute("year") +" "+request.getSession().getAttribute("month") +" "+request.getSession().getAttribute("day")); if( request.getSession().getAttribute("status").equals(status) && request.getSession().getAttribute("delay").equals(String.valueOf(delayForm)) && request.getSession().getAttribute("year").equals(year) && request.getSession().getAttribute("month").equals(month) && request.getSession().getAttribute("day").equals(day) ) { M24List = (List) request.getSession().getAttribute("M24List"); }else{ request.getSession().setAttribute("status", status); request.getSession().setAttribute("delay", delayForm); request.getSession().setAttribute("year", year); request.getSession().setAttribute("month", month); request.getSession().setAttribute("day", day); M24List = M24Service.getM24HistoryAdmission(con, delay, delay2, Integer.parseInt(bureau), status, inss, currentdate, Integer.parseInt(Lang), action, request); } }
Et à chaque fois, ma jsp me dit que request.getSession().getAttribute("M24List") est égal à null car il retourne à chaque fois dans le DAO. Mon but étant de n'aller qu'une fois dans le DAO tant que les critères de recherche ne changent pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14public List<M24HistoryAdmission> getM24HistoryAdmission(Connection con, int delay, int delay2, int bureau, String status, long inss, int currentdate, int lang, String action, HttpServletRequest request) throws SQLException{ // Traitement pour aller chercher les données dans la base de données while(rs.next()){ // création de l'objet M24 M24List.add(M24); } System.out.println("Création de l'objet dans la session"); request.getSession().setAttribute("M24List", M24List); return M24List; }
Le pire c'est qu'hier ça fonctionnait, et maintenant ça ne fonctionne plus alors que je n'ai rien changé dans le DAO. Je ne sais pas si je dois retourner l'objet request en paramètre de la fonction plutot que l'objet M24List (ce qui ne sert à rien mais comme je suis en phase de test, je ne voulais pas tout rechanger, je pensais que je pouvais simplement remplir la session et récupérer ce que j'avais mis dedans depuis la jsp.
Est-ce que quelqu'un pourrait m'aider? (si mon problème est assez clair)
Merci d'avance![]()
Partager