IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Mettre une arraylist d'objet dans la session à partir du DAO


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 77
    Par défaut Mettre une arraylist d'objet dans la session à partir du DAO
    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 :
    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);
    	}
    }
    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
    public 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; 
     
    }
    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.

    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

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 77
    Par défaut
    J'ai trouvé, j'avais juste bêtement mal fait mon if

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getSession().getAttribute("delay").equals(String.valueOf(delayForm))
    Je devais simplement faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getSession().getAttribute("delay").equals(delayForm)
    Je pensais que je devais caster mon integer en string pour pouvoir le comparer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/07/2013, 12h20
  2. [Débutant] Mettre une Liste d'objets dans un objet sélectionnable
    Par khadime27 dans le forum C#
    Réponses: 1
    Dernier message: 19/09/2012, 10h51
  3. trier une liste d'objets dans une ArrayList
    Par sandrine49 dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 13/10/2008, 08h59
  4. [Debutant] Mettre une chaine de caractere dans un tableau
    Par bouboussjunior dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 14/09/2004, 11h33
  5. [C#] Comment mettre une ligne en couleur dans mon DataGrid ?
    Par vandeyy dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/07/2004, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo