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 :

Portée d'un Bean


Sujet :

Servlets/JSP Java

  1. #1
    Invité
    Invité(e)
    Par défaut Portée d'un Bean
    Bonsoir,

    Dans une page accueil.jsp, je crée un bean avec le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <jsp:useBean id="commande" class="com.commande" scope="session" />
    En cliquant, sur un bouton de cette page, j'arrive sur une deuxième page jsp mais quand j'appelle une fonction de commande avec le code ci dessous, le bean commande est inconnu. Pourtant, ma portée est session.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float total = commande.montant()
    Pouvez-vous m'aider ?

    Merci
    Dernière modification par Invité ; 16/12/2009 à 21h13.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Tu as bien mis le tag <jsp:useBean> dans la deuxième page également ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Invité
    Invité(e)
    Par défaut
    Non. Le problème doit venir de là.

    Je dois donc dans la deuxième page écrire aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <jsp:useBean id="commande" class="com.commande" scope="session" />

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Et oui...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci.

    Je comprends mieux l'utilité de "scope". En fait, si on a scope="page" alors un nouveau bean sera recréé dans chaque page alors que là avec scope="session" on réutilise le bean créé auparavant.

    Est-ce bien çà ?

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    A vrai dire le "scope" n'est rien d'autre que la précision de "l'endroit" où sera stocké l'objet. Donc, on a :
    - page (lié à la page)
    - request (lié au request, visible uniquement pour l'utilisateur, plus d'existance une fois la réponse envoyée au client)
    - session (lié à la session, visible uniquement pour l'utilisateur, existe tant que sa session http est active)
    - application (lié au conteneur de servlet pour l'application, tous les utilisateurs de l'application y ont accès)

    Au niveau du tag <jsp:useBean>, il y a une particularité également.
    Si tu utilises l'attribut "class", l'objet est instancié par son constructeur sans argument et placé dans le scope.
    Avec l'attribut "type", l'objet doit exister dans le scope mais on n'a pas besoin d'un constructeur sans argument.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Invité
    Invité(e)
    Par défaut
    J'ai compris sauf ta remarque sur la particularité au niveau du tag <jsp:useBean>. Peux-tu me donner un exemple pour lequel on utilise type et pas class s'il te plaît ?

    Merci

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    J'utilise systématiquement "type", les objets de mes pages étant instanciés par le contrôleur, modèle MVC oblige...
    Je ne laisse pas un appel de page créer des objets...
    Bon, utiliser "class" ne veut pas dire qu'on est "out" pour autant... tout dépend de la philosophie
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Invité
    Invité(e)
    Par défaut
    Autant suivre le modèle MVC mais je débute.

    Si tu as un bon livre pour suivre les bonnes pratiques, je suis preneur.

    En tout cas, merci pour ton aide.

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je n'ai pas de livre à te conseiller...
    Pour les bonnes pratiques, le plus simple est de résonner en couches :

    1 pour stoker les données dont tu as besoin pour l'affichage -> bean (Modèle)
    1 pour mettre en forme les données -> jsp (Vue)
    1 pour faire le lien entre les 2 premières -> servlet (Contrôleur)

    Chaque couche ne s'occupant que de ce qui la regarde...

    Ensuite, on peut ajouter certains éléments comme une couche d'accès aux données (dao) qui sera majoritairement utilisée par le contrôleur mais qui pourrait accessoirement être utilisée par le modèle (données d'initialisation pour des combo-box par exemple)

    Au niveau de la vue, le plus simple est de mettre le code html de base et d'utiliser les scriptlet (<%= ... %>) pour incorporer les valeurs dynamiques.
    Il est évidement plus productif de passer par des taglib ou de développer ses propres composants (très simple, très efficace)
    Dans tous les cas, le seul rôle de la vue est de mettre en forme la page html qui sera retournée au client.

    Tu peux t'intéresser à certains framework comme struts ou jsf qui te faciliteront (à terme) les développements... (il y a un temps d'apprentissage)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Invité
    Invité(e)
    Par défaut
    Je vais mis mettre .

    Merci

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/03/2014, 08h01
  2. Portée dans un backing bean
    Par sepointes dans le forum JSF
    Réponses: 8
    Dernier message: 19/12/2013, 08h35
  3. atteindre une bean de portée Session depuis un servlet
    Par Dankedan dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 09/04/2011, 16h18
  4. Portée d'une managed bean
    Par jaljal dans le forum JSF
    Réponses: 6
    Dernier message: 13/04/2009, 01h58
  5. Réponses: 1
    Dernier message: 20/10/2006, 09h43

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