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 :

[facile] Garder un objet en mémoire


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut [facile] Garder un objet en mémoire
    Bonjour,
    j'ai une application toute petite (1 jsp, 2 actions, 1 service)

    jsp dans laquelle j'ai 2 listes déroulantes et un bouton rechercher.
    au lancement de l'application, un index.jsp fait un redirect sur une action appelé "Load" qui met dans la requête mes 2 Collections et forward vers la page jsp principale. Jusque la ça fonctionne à merveille

    Quand je clique sur rechercher, normalement ça doit afficher les résultats de la recherche sur la même page. Mais le hic c'est qu'il a perdu les 2 Collections de mes listes déroulantes et donc il provoque un erreur "cannot find bean..."

    Dans mon Action Load j'ai essayé d'écrire

    request.setAttribute

    et aussi requestion.getSession().setAttribute

    mais ni l'un ni l'autre ne fonctionne et je ne sais pas comment garder ma liste déroulante remplie tout au long de mon application.

    PS : C'est une application multi user Struts mais tous partagent le même contenu des listes déroulantes et il n'y aucun notion de sécurité / login sur cette appli.

    Merci d'avance !

    Edit : En fait j'ai l'impression que ma session est remise à zéro tout le temps et que donc les 2 Collections sensées remplir les listes déroulantes sont détruite à la première requête... Ai-je omis une configuration quelque part ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Par défaut
    Il faut mettre tes collections en session.

    Dans la première Action qui est appelée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    HttpSession session = request.getSession(true);
     
    List maListeDeVilles = new ArrayList();
    maListeDeVilles.add("Paris");
    maListeDeVilles.add("Lille");
    maListeDeVilles.add("Lyon");
     
    session.setAttribute("ListeDesVilles", maListeDeVilles);

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 241
    Par défaut
    Bonjour,

    étant donné que tu places tes beans dans l'objet HttpServletRequest, dès que la page a été servie au client, l'objet HttpServletRequest est détruit, et donc tes beans sont perdus.

    Si tes beans doivent perdurer, il faut s'intéresser aux scopes Session ( request.getSession().get/setAttribute() ) et Application ( getServletContext().get/setAttribute() ) .

    D'après ce que tu dis:
    PS : C'est une application multi user Struts mais tous partagent le même contenu des listes déroulantes et il n'y aucun notion de sécurité / login sur cette appli.
    J'ai l'impression que le scope Application serait le plus adéquat.

    Cordialement,

  4. #4
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    Bonjour,
    après quelques litres de café, voici la solution,
    le projet s'appellait Web_Location

    hors depuis Internet Explorer 5, les "_" ne sont plus supportés et les sessions sont reset à chaque appelle d'une url contenant ce caractère.

    J'ai renommé l'application en "Location" et du coup sans modifier mon code cela fonctionne bien.

    Merci à tous pour vos propositions !

    Mano.

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

Discussions similaires

  1. Garder un Objet User en Mémoire
    Par val373 dans le forum Général Java
    Réponses: 9
    Dernier message: 20/11/2014, 11h06
  2. Garder des objets en mémoire dans le service.
    Par Reminouche dans le forum Services Web
    Réponses: 5
    Dernier message: 23/05/2011, 17h22
  3. Comment garder une variable en mémoire...
    Par sam01 dans le forum Langage
    Réponses: 17
    Dernier message: 24/04/2006, 13h02
  4. création d'objet en mémoire partagé
    Par BigNic dans le forum C++
    Réponses: 6
    Dernier message: 28/11/2005, 18h41
  5. Implémentation des objets en mémoire
    Par SteelBox dans le forum C++
    Réponses: 6
    Dernier message: 15/01/2005, 21h38

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