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 :

Déclarer un managed bean dans une servlet


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 191
    Par défaut Déclarer un managed bean dans une servlet
    Bonjour à tous,

    Question : Comment déclarer un managed bean dans une servlet?

    J'ai essayé les 3 méthodes se trouvant dans la FAQ (Comment récupèrer par programmation la valeur d'un managed bean ?) sans succès. Pourquoi cela ne marche-t-il pas?

    J'ai aussi tenté avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    controller= (Controller) request.getSession().getAttribute("controller");
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    controller = (Controller) getServletContext().getAttribute("controller");
    Quelqu'un pourrait-il me donner une explication sur le mécanisme de gestion des managed beans (JSF)?

    Comment arriver à mes fins?

    Merci

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par scorplayer Voir le message
    Bonjour à tous,

    Question : Comment déclarer un managed bean dans une servlet?

    J'ai essayé les 3 méthodes se trouvant dans la FAQ (Comment récupèrer par programmation la valeur d'un managed bean ?) sans succès. Pourquoi cela ne marche-t-il pas?
    Peut être parce qu'il y a une différence fondamentale entre déclarer et récupérer? LA récupération ca se fait dans le code ou dans les template JSP/Facelets, la déclaration, ça se fait dans les fichiers faces-config.xml
    Quelqu'un pourrait-il me donner une explication sur le mécanisme de gestion des managed beans (JSF)?
    Lorsque le nom d'un bean (Machin) est rencontré dans une EL (e: ${Machin.truc.bidule}) et que celui-ci n'est pas trouvable actuellement ni dans la requête, ni dans la session, ni dans l'application, JSF va prendre se liste obtenue par configuration des managed bean, trouver la déclaration
    et
    1) créer un instance du managed bean en question, suivant les contraintes indiquées dans la cnfiguration
    2) stocker ce bean dans la session/requete/application (suivant ce qui s'applique) pour un usage futur.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 191
    Par défaut
    Merci pour l'explication.

    Je veux récupérer la valeur d'un managed bean dans une servlet afin de réinitialiser une variable. C'est vrai que ce n'est pas pareil, tu fais bien de le souligner.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    La première chose à faire est de déterminer si le managedbean est déjà initialisé.

    Si pas, t'es parti pour la gloire! Les managedBean sont initalisés dans un FacesContext, contexte disponible uniquement dans le cadre de la Servlet JSF!

    Si oui, il faut déterminer quel type de managedbean c'est (session, request, application) et en fonctione de ça regarder à son nom dans ladite map. MAIS! la spec JSF ne garanti en rien le nom sous laquel c'est stocké. Myfaces utilisera le nom du managedBean, mais rien n'empeche une implémentation de stocker, par exemple, sous le nom com.jsfImplementor.bean.<nomdubean> par exemple

    Il existe des bidouilles qui consistent à crér un facescontext à partir de sa factory, pour pouvoir utiliser les EL a avoir tout comme dans JSF, mais c'est pas la gloire non plus.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 191
    Par défaut
    Malheureusement le managed bean n'est pas initialisé : c'est pas la gloire!

    J'avais vu la bidouille qui consiste à créer un facescontext à partir de sa factory et ça ne me plaisait pas. Tant pis, je m'arrangerai autrement.

    Merci tchize_

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/02/2013, 17h44
  2. NullPointerException dans une servlet utilisant un bean
    Par Dave62 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 27/12/2010, 19h53
  3. Réponses: 7
    Dernier message: 26/08/2009, 13h44
  4. problème d'injection (?) d'un session bean EJB3 dans une servlet
    Par toomsounet dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 11/03/2007, 01h26
  5. [Struts] [JavaBean] Deux beans dans une Action
    Par jak0 dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/05/2005, 16h02

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