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

JSF Java Discussion :

Repasser dans le constructeur d'un bean en scope session


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut Repasser dans le constructeur d'un bean en scope session
    Bonjour,

    j'utilise un bean en scope session pour l'affichage d'une page jsf. Cette page contient une liste de données et son formulaire de saisie associé.

    Le constructeur de mon bean attend plusieurs paramètres que je passe dans la requête et que je récupère de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FacesContext facesContext = FacesContext.getCurrentInstance();
    HttpServletRequest request = (HttpServletRequest)facesContext.getExternalContext().getRequest();
    String param1 = request.getParameter("param1");
    String param2 = request.getParameter("param2");
    Sur une de mes autres pages, j'ai un lien qui a pour but de rappeler la page citée précédemment, en passant de nouveaux paramètres. Mais, étant donné que mon bean est en scope session, JSF ne repasse pas dans le constructeur.

    Alors ma question est la suivante : est-il possible de forcer le passage dans le constructeur d'un bean en scope session ? Autrement dit, peut-on créer à tout moment une nouvelle instance d'un bean en scope session ?

    Merci d'avance

  2. #2
    Membre très actif
    Profil pro
    aucune
    Inscrit en
    Juillet 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Juillet 2007
    Messages : 134
    Par défaut
    Tu peut mettre l'initialisation des valeurs dans une méthode que tu rappel en lieu et place du constructeur ( dans lequel tu peut aussi appeler cette méthode).

  3. #3
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Bon en fait, étant donné que j'utilise la même JSP pour afficher l'ensemble des listes de données de mon application, je suis obligé d'utiliser le scope request. Je vous épargne les contraintes techniques qui me font changer de scope.


    Cela me pose un nouveau problème. Quand j'appelle ma page la 1ère fois, en saisissant l'URL dans mon navigateur, je passe dans le constructeur du bean qui va chercher les données de ma liste en base de données pour initialiser ma page.

    Puis quand je clique sur un bouton action qui m'execute un insert dans la base, je dois aller re-chercher les données dans la base après insertion. Problème : les données ont déjà été chargées dans le constructeur, donc les données sont chargées 2 fois, ce qui peut devenir très lourd sur une table contenant beaucoup de données.

    Donc y a-t-il un moyen d'éviter d'aller chercher 2 fois les données en BDD ?

  4. #4
    Membre confirmé Avatar de nighthammer
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2005
    Messages : 122
    Par défaut
    Si tu mets ta liste en t:saveState (donc si tu la sérialises dans ta page), il ne devrait pas aller rechercher les éléments de ta liste en page puisqu'il va recréer ta liste à partir des données stockées dans la page.

  5. #5
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Citation Envoyé par nighthammer Voir le message
    Si tu mets ta liste en t:saveState
    Cela suppose que j'utilise la librairie MyFaces, ce qui n'est pas le cas...

    J'utilise une autre libriairie et je n'ai jamais réussi à coupler les 2, cela génère des confilts. Ca fait plusieurs fois que j'entends parler de ce t:saveState, ça a l'air vraiment cool. Dommage que je ne puisse pas l'utiliser, le projet a trop avancé pour que je puisse changer comme ça.

    Une autre idée peut-être ?

  6. #6
    Membre confirmé Avatar de nighthammer
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2005
    Messages : 122
    Par défaut
    Pour ton problème avec MyFaces, est ce que tu as lu ce post là :
    http://www.developpez.net/forums/sho...d.php?t=578815

    Je ne sais pas si c'est ça ton problème, mais ça peut valoir le coup d'y jeter un oeil. J'avais eu ce problème, il y a quelques temps mais je n'avais pas pensé à poster un truc là dessus.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/07/2013, 23h45
  2. Réponses: 4
    Dernier message: 18/05/2010, 16h56
  3. Réponses: 3
    Dernier message: 06/11/2005, 18h02
  4. [debutant] rappel de la classe dans le constructeur
    Par newtito dans le forum Débuter
    Réponses: 6
    Dernier message: 05/10/2005, 00h15
  5. Capture d'exception dans un constructeur
    Par declencher dans le forum Composants VCL
    Réponses: 8
    Dernier message: 03/02/2004, 12h52

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