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

Java EE Discussion :

[CMP] Est-ce la bonne méthode ? [EJB2.1 Entity]


Sujet :

Java EE

  1. #1
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 136
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    3
    Par défaut [CMP] Est-ce la bonne méthode ?
    Salut tout le monde,

    Donc voila : J'ai un JavaBean qui va chercher une personne dans ma table mappée TblParents et qui l'affiche ensuite dans ma page JSP.
    Voici le code du JavaBean :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     public TblParents mparent = null;
     
       public void mafonction() throws NamingException, FinderException {
         Context ctx = new InitialContext(System.getProperties());
         TblParentsHome home = (TblParentsHome) PortableRemoteObject.narrow(ctx.lookup("TblParents"), TblParentsHome.class);
     
         Iterator i = home.findByPrimaryKey(new Integer(76)).iterator();
         mparent = (TblParents) PortableRemoteObject.narrow(i.next(), TblParents.class);
      }
    Et donc dans ma JSP je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Nom : <%= monbean.mparent.getNom() %>
    Déjà question 1 : est-ce la bonne méthode ? Tout fonctionne bien ici mais je voudrais savoir si je fais tout bien comme il faut.

    Enfin question 2 : Dans l'exemple précédent j'affiche une seule personne de l'itérateur... Comment faire une boucle dans ma page JSP pour afficher plusieurs personnes ? En fait, je ne sais pas comment faire pour envoyer mon iterateur dans la page JSP... Vala.

    Merci pour vos réponses,
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  2. #2
    Membre éprouvé
    Avatar de request
    Inscrit en
    Novembre 2002
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 328
    Points : 1 248
    Points
    1 248
    Par défaut
    C'est un ejb session ou Entity?

    tu fais un findByPrimary key puis iterator(), pourquoi?

    Ces deux questions permetront de mieux répondre à ton problème.

  3. #3
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 136
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    3
    Par défaut
    Ah oui c'est vrai, j'ai oublié de le signaler :

    Donc c'est un CMP Entity, et je fais un iterator pour correspondre à mon Iterator i... Mais en fait tu as raison c'est pas utile forcément.
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  4. #4
    Membre éprouvé
    Avatar de request
    Inscrit en
    Novembre 2002
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 328
    Points : 1 248
    Points
    1 248
    Par défaut
    Non, la méthode n'est pas bonne, tu utilise une référence de ton Entity au niveau du web, chaque appel sur une méthode get/set entrainera un rechargement de l'état, un transaction ...

    Utilise une facade (EJB Session) qui tu fournis un ValueObject (JavaBean de transport).

    Dans cet article tu trouveras une telle mise en oeuvre.
    http://request.developpez.com/j2ee/d...rns/hertitage/

    Bon courage.

  5. #5
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 136
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    3
    Par défaut
    Super ! Enfin un exemple concret ! En plus avec JBuilder. Impec.

    Merci beaucoup, je vais méditer (et surtout imprimer ) tout ca.
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  6. #6
    Membre éprouvé
    Avatar de request
    Inscrit en
    Novembre 2002
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 328
    Points : 1 248
    Points
    1 248
    Par défaut
    N'éssai pas de reproduire à l'identique mon article, il pose des problèmes avec plusieurs serveurs d'application.

    Par contre toutes les idées sont exploitable.

    Bon courage.

  7. #7
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 136
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    3
    Par défaut
    Ouaip... J'ai téléchargé le projet JBuilder et je comprends bien maintenant qu'il faut utiliser un EJB Session (et y a une histoire de "facade" aussi )

    Le truc, c'est que tous les exemples que je trouve sont avec une sortie vers System.out.print. Impossible de trouver un exemple concret vers une page JSP ou une appli avec Swing.

    Sur le bouquin que j'ai acheté (JSP Professionnel) c'est la même chose... Y a un exemple concret, mais avec du XSLT... Donc ca complique tout et il n'y a quasiment aucune explication.

    Saurais-tu ou je pourrais trouver quelque chose de simple ? Ou alors, d'après le code que j'ai mis au début de ce post, pourrais tu me dire en gros de quelle façon je dois implémenter ma JSP ?

    Je débute et je n'ai pas la chance de pouvoir suivre une formation.

    Merci pour ton aide,
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  8. #8
    Membre éprouvé
    Avatar de request
    Inscrit en
    Novembre 2002
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 328
    Points : 1 248
    Points
    1 248
    Par défaut
    Tu peux utiliser les beans de mon article directement dans ta page JSP:

    <%Personne p1 = PersonneUtil.find(new Integer(1));%>
    Nom: <%=p1.getNom()%><br/>
    Prénom: <%=p1.getPrenom()%>

    Il y aurai plein de chose à te dire sur la programmation Web... L'une d'elles: séparaer le traitement de la visualisation.

  9. #9
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 136
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    3
    Par défaut
    Si ca peut aider certains, j'ai trouvé une bonne solution qui marche pas mal pour séparer le code html de la jsp.

    J'ai donc crée un EJB CMP 2.0 basé sur une table, avec un fonction qui affiche toutes les lignes.

    Dans mon javabean, je crée une fonction qui appelle celle du javabean et qui me retourne une Collection.

    Dans ma page JSP je boucle sur la collection en remplissant une page "Modele" HTML grâce à ceci :

    http://javaby.sourceforge.net

    Ainsi, je peux remplir mon modele html grâce à mon entité.

    voici le code du javabean :

    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
     
    import java.util.*;
    import javax.naming.*;
    import javax.ejb.*;
    import javax.rmi.PortableRemoteObject;
    import java.io.IOException;
     
    public class Jsp1Bean {
     
      public static Collection ToutParent() throws NamingException, FinderException , IOException {
        Context ctx = new InitialContext(System.getProperties());
        TblParentsHome home = (TblParentsHome) PortableRemoteObject.narrow(ctx.lookup("TblParents"), TblParentsHome.class);
     
        Collection a = home.findParent();
        return a;
      }
    }
    L'intérêt qu'il n'y est ici que l'appel à l'EJB me permet d'avoir une fonction générique... réutilisable dans toute l'appli

    voici le code de la jsp (donc sans aucun code html):

    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
     
    <jsp:useBean id="jsp1BeanId" scope="session" class="untitled1.Jsp1Bean" />
    <jsp:setProperty name="jsp1BeanId" property="*" />
    <%@page import="org.javaby.jbyte.Template, javax.rmi.*,java.sql.*,untitled1.*,javax.naming.*,java.util.*" %>
    <%
    try {
     
    String a = System.getProperty("user.dir")+"\\modeles"+"\\modele.html";
    Template mtemp = new Template(a),moparent = mtemp.get("moparent");
     
    Collection c = untitled1.Jsp1Bean.ToutParent();
    TblParents mparent;
    Iterator i = c.iterator();
     
        while (i.hasNext()) {
            mparent = (TblParents) PortableRemoteObject.narrow(i.next(), TblParents.class);
            moparent.set("nom",mparent.getNom());
            moparent.set("prenom",mparent.getPrenom());
            moparent.set("adresse",mparent.getAdresse());
            mtemp.append("moparent",moparent);
          }
     
       out.println(mtemp);
     
    } catch (Exception error) {
       System.out.println(error.toString());
    }
    %>
    voila. Comme ca, si j'ai d'autres pages jsp avec des champs différents à mettre, je n'aurai juste qu'à les rajouter dans ma JSP. A aucun moment je vais modifier le code mon javabean.

    et mon modele html (basé sur Javaby) :

    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
     
    <html>
    <head>
    <title>Ma page HTML !</title>
    </head>
    <body>
      <h1>
    Exemple de modele avec Javaby
    </h1>
    <br>
    <table>
    <tr bgcolor="d0d0d0"><th>Nom</th><th>Prenom</th><th>Adresse</th></tr>
    <t:moparent>
    <tr>
    <td><a href="#">{v:nom}</a></td>
    <td><a href="#">{v:prenom}</a></td>
    <td><a href="#">{v:adresse}</a></td>
    </tr>
    </t:moparent>
    </table>
    </body>
    </html>
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

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

Discussions similaires

  1. Réponses: 52
    Dernier message: 07/06/2010, 10h37
  2. Quelle est la bonne méthode ?
    Par pot2yaourt dans le forum C#
    Réponses: 5
    Dernier message: 16/04/2010, 09h26
  3. Est ce que j'utilise la bonne méthode ?
    Par rvzip64 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 26/05/2009, 22h37
  4. [2.1.3][Designer] Est-ce la bonne méthode ?
    Par scariou29 dans le forum BIRT
    Réponses: 0
    Dernier message: 11/07/2008, 15h20
  5. Réponses: 2
    Dernier message: 14/03/2008, 09h57

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