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 :

Créer un datatable à partir de ejb ql?


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Analyste programmeur
    Inscrit en
    Novembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Novembre 2006
    Messages : 197
    Par défaut Créer un datatable à partir de ejb ql?
    Bonjour,

    depuis qlq jours j'essaye de creer un datatable à partir d'une requette EJB QL mais sans succé.

    Je m'explique un peu, je vais creer une table à partir d'une requette ejb ql cette requette utilise plusieur tables ou entite bean qui ne sont pas lies entre eux.

    avez vous une idée ou information???

    @+

  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,

    Peux-tu préciser tes problèmes ?
    As tu des difficultés à créer ta requête EJB QL ? Si c'est le cas, je ne pense pas que ce soit le bon forum...
    Ou alors as-tu des difficultés à faire afficher les résultats de ta requête dans une datatable JSF ? Si c'est le cas, alors tu es sur le bon forum Mais il faut nous donner plus d'informations si tu veux de l'aide...
    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 confirmé
    Profil pro
    Analyste programmeur
    Inscrit en
    Novembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Novembre 2006
    Messages : 197
    Par défaut
    Bonjour,

    Ok

    j'ai une requette EJB QL qui marche tres bien et je veux afficher cette resultat dans un datatable JSF.

    exemple :

    select d.id,d.name,a.model,a.type from table1 d,table2 a

  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
    Voilà comment procéder alors :

    Tu crées une classe Java, on va dire MyRecord. Cette classe contiendra les propriétés suivantes : id, name, model et type, avec bien entendu les getters et les setters correspondants.

    Lorsque tu récupères les résultats de ta requête, tu crées pour chaque enregistrement un objet de classe MyRecord. Tu places tous les MyRecord dans une List, on va dire myRecords.

    Dans les pages JSF, tu vas demander à ta datatable d'itérer sur cette fameuse liste.
    Ce qui devrait donner quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <h:datatable value="#{myBean.myRecords}" var="record" ...>
        <h:column>
            <f:facet name="header">
                <h:outputText value="Id"/>
             </f:facet>
             <h:outputText value="#{record.id}"/>
             ...
        </h:column>
    </h:datatable>
    Est-ce plus clair ?
    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

  5. #5
    Membre confirmé
    Profil pro
    Analyste programmeur
    Inscrit en
    Novembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Novembre 2006
    Messages : 197
    Par défaut
    bonjour,

    j'ai l'essaye mais j'ai eu cette erreur:
    org.apache.jasper.JasperException: javax.faces.el.ReferenceSyntaxException: L'opérateur "." a été fourni avec une valeur d'index de type "java.lang.String" à appliquer à une liste ou un tableau, mais cette valeur ne peut être convertie en un nombre entier.
    voici ma requette :
    SELECT DISTINCT

    tablepocde_1.ClientP as client,
    tablepocde_1.SaisonP as saison,
    tablepocde_1.ModBaseP as model,
    tablepocde_1.`Nom Lavage` as lavage,
    tablequalite.NomTissu as tissu,
    planning.codechaine as chaine,
    tablepocde_1.POIntern as poi,
    tablepocde_1.PO as po,
    dcommandspart.`O/C` as oc
    FROM
    `d-commandespart` as dcommandspart
    LEFT JOIN tablepocde AS tablepocde_1 ON tablepocde_1.POIntern = dcommandspart.`O/CP`
    LEFT JOIN `tablequalité` as tablequalite ON tablequalite.CODEQUALITE=tablepocde_1.CODEQUALIT1
    LEFT JOIN plan_t_planplanning as planning ON planning.pointerne=tablepocde_1.pointern
    where tablepocde_1.ClientP='PRL' AND tablepocde_1.saisonP='SPRING 07' AND tablepocde_1.pOIntern='01.020.01605'
    et ma classe :
    private String clientP;
    private String saisonP;
    private String modBaseP;
    private String nom_lavage;
    private String nomtissu;
    private String codeChaine;
    private String pOIntern;
    private String po;
    private String o_c;
    public Listpo(String clientP,String saisonP,String modBaseP,String nom_lavage,String nomtissu,String codeChaine,String pOIntern,String po,String o_c) {

    this.clientP=clientP;
    this.saisonP=saisonP;
    this.modBaseP=modBaseP;
    this.nom_lavage=nom_lavage;
    this.nomtissu=nomtissu;
    this.codeChaine=codeChaine;
    this.pOIntern=pOIntern;
    this.po=po;
    this.o_c=o_c;
    }
    avec les getters et les setters

    l'appelle de la requette:
    List<Listpo> pp =sessionEJB.SQLNATIVE(requette);
    je crois qu'il y a une chose qui m'echappe

  6. #6
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour.
    As tu déjà testé ta requête indépendamment de JSF ? Histoire de savoir d'où elle vient ... J'ai comme l'impression que ça n'a rien à voir avec JSF.

  7. #7
    Membre confirmé
    Profil pro
    Analyste programmeur
    Inscrit en
    Novembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Novembre 2006
    Messages : 197
    Par défaut
    Bonjour,

    bien sur que j'ai testé la requette elle marche,


    je cherche encore sur la solution de mon probleme

    @+

  8. #8
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Alors pourquoi tu ne nous donne pas ton code JSF ?

  9. #9
    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
    Oui, le code JSF peut nous être utile.
    Sinon, l'attribut value de ta datatable pointe bien vers une Liste d'objets ?
    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

  10. #10
    Membre confirmé
    Profil pro
    Analyste programmeur
    Inscrit en
    Novembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Novembre 2006
    Messages : 197
    Par défaut
    Ok, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        <h:dataTable rows="25" value="#{beanrechpo.lpo}" var="var"
                             binding="#{backing_rechpo.dataTable1}" id="dataTable1">
                  <!--oracle-jdev-comment:Faces.RI.DT.Class.Key:java.util.List<web.Listpo>-->
                  <h:column>
                    <f:facet name="header">
                      <h:outputText value="nb"/>
                    </f:facet>
                    <h:outputText value="#{var.nb}"/>
                  </h:column>
                  <h:column/>
                </h:dataTable>
    pour le remplissage de la table j'utilise cette classe Beanrechpo :

    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
             requette="SELECT  1 as nb, \n" + 
             "tablepocde_1.ClientP as client, \n" + 
             "tablepocde_1.SaisonP as saison, \n" + 
             "tablepocde_1.ModBaseP as model, \n" + 
             "tablepocde_1.`Nom Lavage` as lavage, \n" + 
             "tablequalite.NomTissu as tissu, \n" + 
             "planning.codechaine as chaine, \n" + 
             "tablepocde_1.POIntern as poi, \n" + 
             "tablepocde_1.PO as po, \n" + 
             "dcommandspart.`O/C` as oc \n" + 
             "FROM \n" + 
             "`d-commandespart` as dcommandspart \n" + 
             "LEFT JOIN tablepocde AS tablepocde_1 ON tablepocde_1.POIntern = dcommandspart.`O/CP`\n " + 
             "LEFT JOIN `tablequalité` as tablequalite ON tablequalite.CODEQUALITE=tablepocde_1.CODEQUALIT1\n " + 
             "LEFT JOIN plan_t_planplanning as planning ON planning.pointerne=tablepocde_1.pointern " +
             "where tablepocde_1.ClientP='PRL' AND tablepocde_1.saisonP='SPRING 07' AND tablepocde_1.pOIntern='01.020.01605' " +
             "GROUP BY tablepocde_1.ClientP";
             List<Listpo> pp =sessionEJB.SQLNATIVE(requette);
             System.out.println("\n\n\n *********   "+pp.size()+"  *****************\n\n\n");
     
            this.lpo=  pp;
    le system.out.println c'est pour le test de la requête

    le pour la déclaration de la liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
         private List<Listpo> lpo;
         public List<Listpo> getLpo(){
     
             return (List<Listpo>) this.lpo;
         }
         public void setLpo(List<Listpo> p){
             this.lpo=p;
         }
    Si vous voulez autre chose n'hésitez pas

    @+

  11. #11
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    T'es sur que c'est tout ce que contient ta page ? Je crois que l'erreur vient d'autre part...
    Voilà ce que je te propose:
    Tu ne gardes dans la JSF que le bout de code que tu nous a donné.
    et tu testes.

  12. #12
    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
    Déjà, je vois une erreur :

    Dans ton tableau, tu fais : <h:outputText value="#{var.nb}"/>. Or dans ta classe ListPo que tu as fourni dans ton message de 9h00, la propriété nb (et donc les getters et setters de cette propriété) n'existe pas...
    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

  13. #13
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Romain ! Je n'y ai vu que du feu
    En fait, nb est toujours à 1 et est introduite pas le select en natif qu'il a fait, mais c'est vrai qu'elle n'est déclaré pas dans sa classe.

  14. #14
    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
    Maintenant, je ne garantis pas que ça résolve son problème, parce que le message d'erreur ne me parait pas vraiment correspondre à une propriété manquante dans un bean...
    Mais ça fera sans doute avancer le schmilblik...
    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

  15. #15
    Membre confirmé
    Profil pro
    Analyste programmeur
    Inscrit en
    Novembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Novembre 2006
    Messages : 197
    Par défaut
    D'après le message d'erreur j'ai conclu qu'il trouve une erreur au niveau de conversion pour index
    L'opérateur "." a été fourni avec une valeur d'index de type "java.lang.String" à appliquer à une liste ou un tableau, mais cette valeur ne peut être convertie en un nombre entier.
    pour cela j'ai ajouté le 1 dans la requête et j'ai l'ajouté dans la classe Listpo, mais le message d'erreur reste le même.

    il y a-t-il un problème d'index de la liste de la table ?

    @+

  16. #16
    Membre confirmé
    Profil pro
    Analyste programmeur
    Inscrit en
    Novembre 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Novembre 2006
    Messages : 197
    Par défaut
    bon,

    j'ai trouvé une solution grace a ce lien :http://www.developpez.net/forums/sho...d.php?t=351983

    @+

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/12/2007, 18h44
  2. créer DataTable à partir d'un IList?
    Par cortex024 dans le forum ASP.NET
    Réponses: 14
    Dernier message: 30/08/2007, 15h57
  3. [C#] Créer un document à partir de mon prog
    Par matech dans le forum Windows Forms
    Réponses: 8
    Dernier message: 03/03/2005, 16h27
  4. Créer une video à partir d'images
    Par Akta3d dans le forum DirectX
    Réponses: 5
    Dernier message: 13/07/2004, 14h46
  5. Comment créer un bitmap à partir d'un panel ?
    Par calou34 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 19/08/2003, 15h06

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