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 :

Init d'un managed-bean scope session


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 325
    Par défaut Init d'un managed-bean scope session
    Bonjour,

    je cherchais comment initialiser un bean JSF de scope session, c'est à dire par exemple remplir des listes de données de références pour mes selectMenu, etc.

    Pour ces initialisations j'utilise des services injectés par Spring dans les faces-config. Et le problème c'est que j'avais prévu de faire mes initialisations dans le constructeur de mon managed-bean.
    Or les services à ce moment ne sont pas encore injectés et je ne peux pas les utiliser sous peine d'une NPE.

    J'ai donc utilisé l'annotation @PostConstruct sur une méthode d'init distincte du constructeur. Ca marche très bien.

    Puisque cette annotation @PostConstruct appartient au package javax.annotation, elle n'a a priori rien à voir avec les JSF ni avec Spring.
    Je sais qu'avec Spring on peut définir une méthode appelée après le constructeur d'un bean. Est-ce qu'il existe un mécanisme similaire propre à JSF ?

    Pour info je suis tombé sur ce post et celui-ci. Le premier n'apporte pas beaucoup d'info supplémentaire, et le second est pour moi un usage détourné du setter d'une propriété qui relève un peu de la bidouille, même si ça marche.

    Comment faites-vous pour réaliser les initialisations de vos controller JSF dans ce genre de configuration ?

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Bonjour,

    Ta méthode me parait tout à fait correcte.
    Ce mécanisme n'est effectivement pas spécifique à JSF, mais à la gestion des beans (ici tu utilises Spring pour gérer ton pool de beans). Donc rien de contradictoire dans ta façon de faire. JSF ne fait qu'utiliser les beans que l'on met à sa disposition, que ce soit par Spring ou par un autre framework (qui peut être JSF lui même)...

    En ce qui concerne l'initialisation des listes, il est aussi possible de le faire dans le getter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public List<SelectItem> getMaListe() {
        if (maListe == null) {
            maListe = new ArrayList<SelectItem>();
            // Initialisation de la liste ici.
        }
        return maListe;
    }
    Comme ton bean est en scope session, tu n'initialises ta liste qu'une seule fois.
    Mais c'est sur que cela peut être plus propre de tout initialiser au sein d'une unique méthode init et du coup d'avoir des getters simples...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 325
    Par défaut
    Merci pour ta réponse, je vais continuer comme ça dans ce cas.
    De toutes façons je ne vois pas bien comment faire autrement

  4. #4
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Pourquoi chercher autrement vu que cette solution est assez propre au final ?

    Pense à si c'est bon.
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/12/2010, 10h56
  2. Gestion des managed beans (scope, ajax etc.)
    Par Malone dans le forum JSF
    Réponses: 4
    Dernier message: 26/06/2009, 16h30
  3. probleme managed bean en session
    Par *alexandre* dans le forum JSF
    Réponses: 4
    Dernier message: 11/12/2008, 13h19
  4. Réponses: 8
    Dernier message: 09/07/2008, 14h04
  5. Réponses: 3
    Dernier message: 30/05/2007, 10h22

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