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 :

Accès aux objets d'un bean depuis un autre


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de argonath
    Homme Profil pro
    Ingénieur d'Etudes
    Inscrit en
    Juillet 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 248
    Par défaut Accès aux objets d'un bean depuis un autre
    Bonjour,

    comment accéder depuis un bean, à un objet instancié par un autre sans qu'il soit statique (ici je dois accéder à une liste de mon contexte application depuis le constructeur du contexte session ).

    J'imagine qu'il faut récupérer l'instance générée par le contexte

  2. #2
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    il faut passer ton premier bean ou son objet éventuellement en paramètre de ton second bean

  3. #3
    Membre éclairé Avatar de argonath
    Homme Profil pro
    Ingénieur d'Etudes
    Inscrit en
    Juillet 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 248
    Par défaut
    Citation Envoyé par link256 Voir le message
    il faut passer ton premier bean ou son objet éventuellement en paramètre de ton second bean
    en paramètre du constructeur ?
    dans tout les cas il faudra à un moment que je désigne d'une façon ou d'une autre l'instance du bean application, ce n'est pas facesContext.getInstance().quelquechose ? c'est ca que je cherche

  4. #4
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    En paramètre du constructeur oui éventuellement

  5. #5
    Membre éclairé Avatar de argonath
    Homme Profil pro
    Ingénieur d'Etudes
    Inscrit en
    Juillet 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 248
    Par défaut
    ma question c'est comment je peux le faire justement ^^

    je n'ai pas pu trouver par quel biais on désignait l'instance d'un contexte, si une fonction (par exemple de facesContext ) permettait de les récupérer ou autre.

    En règle générale d'ailleurs, il y a un truc qui me parait conceptuellement étrange (entre ça, et le fait qu'apparement (ou alors je n'ai juste jamais trouvé comment ) on ne puisse pas passer de paramètres aux méthodes appelées depuis les jsp ) c'est que tout cet aspect de JEE me parait étonnamment statique, on perd un peu la dimension objet non ?

    ce que je veux dire c'est que l'exemple type c'est ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Exemple complet : TestBean.jsp
     
    <html>
    <HEAD>
    <TITLE>Essai d'instanciation d'un bean dans une JSP</TITLE>
    </HEAD>
    <body>
    <p>Test d'utilisation d'un Bean dans une JSP </p>
    <jsp:useBean id="personne" scope="request" class="test.Personne" />
    <p>nom initial = <%=personne.getNom() %></p>
    <%
    personne.setNom("mon nom");
    %>
    <p>nom mise à jour = <%= personne.getNom() %></p>
    </body>
    </html>
     
    Exemple complet : Personne.java
     
    package test;
    public class Personne {
      private String nom;
      private String prenom;
     
      public Personne() {
        this.nom = "nom par defaut";
        this.prenom = "prenom par defaut";
      }
     
      public void setNom (String nom) {
        this.nom = nom;
      }
     
      public String getNom() {
        return (this.nom);
      }
     
      public void setPrenom (String prenom) {
        this.prenom = prenom;
      }
     
      public String getPrenom () {
        return (this.prenom);
      }
    }
    il est quand même dommage de ne pas pouvoir passer les valeurs directement dans les constructeurs "coté java" mais de devoir donner les valeurs des attributs :
    1. en passant par les setter
    2. depuis la JSP parceque je ne peux pas récupérer en java l'instance courante de mon autre bean

  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
    Citation Envoyé par argonath Voir le message
    ...
    (ici je dois accéder à une liste de mon contexte application depuis le constructeur du contexte session )...
    Qu'appelles-tu le constructeur du contexte session ?

    Si tu as une référence sur l'objet HttpSession, il n'y a aucun problème pour faire ça, tu fais session.getServletContext() et tu as ton contexte application.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    De plus rien ne t'empêche dans ton exemple de rajouter un constructeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public Personne(String nom,String prenom) {
        this.nom = nom;
        this.prenom = prenom;
      }
    Autre chose dans ton exemple il n'y a pas trop d'interet d'instancié un bean au niveau de la JSP.

    Tu pourrais faire ca de la manière suivante :

    Un formulaire avec la saisie du nom et prénom (dans une première JSP )qui à la validation sera redirigé sur une servlet qui récupère le nom& prénom instanciera l'objet Personne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Personne personne = new Personne(request.getParameter("nom"),request.getParameter("prenom"));
    request.setParameter("MaPersonne",personne);
    Il faudrait au passage contrôler les valeurs de nom et prenom avant la création du consstructeur.

    Cette servlet te redirige sur une seconde JSP.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Exemple complet : TestBean.jsp
    <jsp:useBean id="personne" scope="request" class="test.Personne" />
    <html>
    <HEAD>
    <TITLE>Essai d'instanciation d'un bean dans une JSP</TITLE>
    </HEAD>
    <body>
    <p>Test d'utilisation d'un Bean dans une JSP </p>
     
    <p>nom initial = <%=personne.getNom() %></p>
    <p>nom mise à jour = <%= personne.getNom() %></p>
    </body>
    </html>
     
    ou 
     
     
    <html>
    <HEAD>
    <TITLE>Essai d'instanciation d'un bean dans une JSP</TITLE>
    </HEAD>
    <body>
    <p>Test d'utilisation d'un Bean dans une JSP </p>
     
    <p>nom initial = <bean:write name="personne" property="nom" scope="request"/></p>
    <p>nom mise à jour = <bean:write name="personne" property="prenom" scope="request"/></p>
    </body>
    </html>

  8. #8
    Membre éclairé Avatar de argonath
    Homme Profil pro
    Ingénieur d'Etudes
    Inscrit en
    Juillet 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 248
    Par défaut
    Merci pour ces éléments de réponse, je regarde ça.

  9. #9
    Membre éclairé Avatar de argonath
    Homme Profil pro
    Ingénieur d'Etudes
    Inscrit en
    Juillet 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 248
    Par défaut
    Si vos remarques sont instructives, en fait elles ne collent pas à ma situation.

    L'exemple que j'avais pris illustrait en fait dans pas mal de tutos l'instanciation d'un bean, avec un constructeur qui affecte des valeurs par défaut aux paramètres, ceux ci recevant leurs véritables valeurs "à coté"

    En fait ce que me link256 ne va pas dans mon cas car ce que je veux faire ne concerne pas un formulaire mais bien deux managedBean

    pour donner une idée plus claire de ma situation :

    premier bean (portée application) contenant une liste d'objets (par exemple des personnes nom/prenom) constamment mis à jour par l'appli.

    second bean (portée session) dans lequel un objet "courant" doit être défini dans le constructeur en prenant le premier élément de la liste du bean application.

    J'aimerais éviter de trainer des trucs static donc il faut que je retrouve le premier element de cette liste d'une façon ou d'une autre dans le constructeur (Donc ma question est : est ce qu'il existe une méthode JAVA qui renvoie l'instance courante d'un bean ? (ici de mon bean ayant une portée application ) )

    ou bien, il faudrait que le constructeur reçoive en paramètre la liste, via la JSP. (mais
    1/les constructeurs sont appelés "automatiquement" à l'établissement d'une session.
    2/Je ne sais pas comment donner dans une jsp un paramètre à l'appel d'une méthode d'un bean (surtout si ce paramètre est un objet d'un autre bean)
    )

  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 suppose que tu utilises <jsp:useBean>, c'est bien ça ?
    Voici une méthode pour faire ce que tu cherches...
    Il suffit que ton bean implémente HttpSessionBindingListener, comme dans cet exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    package obia.ajax;
     
    import javax.servlet.http.HttpSessionBindingEvent;
    import javax.servlet.http.HttpSessionBindingListener;
     
    public class User implements HttpSessionBindingListener
    {
        private String name;
     
        public User()
        {
            super();
        }
     
     
        public String getName()
        {
            return name;
        }
     
     
        public void setName(String name)
        {
            this.name = name;
        }
     
     
        @Override
        public void valueBound(HttpSessionBindingEvent arg0)
        {
            String applicationName = (String)arg0.getSession().getServletContext().getAttribute("APPLICATION_NAME");
            if (applicationName == null)
            {
                applicationName = "Copyright OBia, 2009, tous droits réservés";
                arg0.getSession().getServletContext().setAttribute("APPLICATION_NAME", applicationName);
            }
            name = applicationName;
        }
     
        @Override
        public void valueUnbound(HttpSessionBindingEvent arg0)
        {
     
        }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Accéder aux objets d'un plugin depuis un autre programme Java
    Par abdessami3e dans le forum Eclipse Platform
    Réponses: 6
    Dernier message: 27/12/2013, 18h11
  2. Accès aux objets de l'IDE depuis un plugin
    Par philippeh dans le forum Eclipse Platform
    Réponses: 3
    Dernier message: 16/04/2008, 14h14
  3. accès aux objets js des pages visitées et autre
    Par Lancelot du Lac dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/03/2008, 08h33
  4. [c#] Méthode d'accès aux objets de ma form1
    Par SDuh dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/03/2006, 11h21
  5. [TGroupBox] Accès aux objets
    Par JediKerian dans le forum Composants VCL
    Réponses: 3
    Dernier message: 04/04/2003, 14h34

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