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 :

[JSF][RichFaces][EJB-SQL] Problème incompréhensible concernant la récupération de données


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 44
    Par défaut [JSF][RichFaces][EJB-SQL] Problème incompréhensible concernant la récupération de données
    Bonjour, je suis depuis une journée entière face à un problème incompréhensible:
    Je travaille sur un projet professionnel avec NetBeans la dernière version du jdk (1.6 et quelques), j'utilise PostGreSQL comme SGBDR et j'utilise les frameworks suivants:JSF, Richfaces, Facelets.

    Je dois utiliser le composant <rich:listShuttle> afin de sélectionner des références.

    L'entity en question se nomme Reference.
    La session concernée au niveau de l'interface possède dans la déclaration la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Reference> searchAtelier();
    Dans la classe session, voici le contenu de la méthode citée juste au-dessus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        @Override
        public List<Reference> searchAtelier()
        {
             Query  query = em.createQuery("SELECT r FROM Reference AS r where r.typeReference='ATELIER'");
             return query.getResultList();
        }
    J'ai testé cette requête dans un <rich:datatable> et ça fonctionne.

    Voici la méthode dans le manageBean ReferenceMB qui se charge d'initialiser la liste sourceAtelier lors de la création du manageBean:
    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
        private void initSource()
        {
            List<Reference> init =new ArrayList<Reference>();
            facade=new ReferenceFacade();
            try
            {
                System.out.println(facade.searchAtelier().size());
                init=(ArrayList<Reference>)facade.findAll();
            }
            catch(Exception e)
            {
                System.out.println("ReferenceMB==>"+e.getMessage());
            }
            if(init.size()>0)
            {
                for(Reference ref:init)
                {
                    Atelier at=new Atelier();
                    at.setNom(ref.getNomReference());
                    at.setUnite(Integer.parseInt(ref.getUniteReference()));
                    sourceAtelier.add(at);
                }
            }
    facade correspond à un ReferenceFacadeRemote (qui a été initialisé avant l'appelle de la méthode initsource de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    facade= new ReferenceFacade();
    . La déclaration de cet objet est relié à l'autre classe grâce à l'annotation @EJB.

    Au niveau de la page html dans la balise form à l'intérieur du body, j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <rich:listShuttle id="myListShuttle" converter="listeAtelierConverter" sourceValue="#{ReferenceMB.sourceAtelier}" targetValue="#{MetascenarioMB.metascenario.atelierCollection}" sourceRequired = "true" targetRequired = "true" var="items" sourceCaptionLabel="#{msg.Available_Workshop}" targetCaptionLabel="#{msg.Chosen_Workshop}">
    Étant donné que j'utilise des try/catch la page s'affiche mais le listeShuttle est vide et dans la console de glassfishV2 j'ai ReferenceMB=>null (correspondant en faite au System.out.println("ReferenceMB==>"+e.getMessage()); de la méthode d'initialisation citée précédemment). Lorsque j'enlève cette partie du code du try/catch j'obtiens un message comme quoi ReferenceMB n'a pu être construit. Normal vu que cette méthode est appelée dans le constructeur donc il y a une réaction en chaîne. Le problème c'est que l'erreur renvoie sur la requête SQL... QUI EST BONNE lorsqu'on utilise celle-ci dans un <rich:datatable>!!????????

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 44
    Par défaut
    Problème résolu, on ne peut utiliser EJB-SQL dans un constructeur, donc je suis obligé de passer par les accesseurs.

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

Discussions similaires

  1. problème de ListBox et récupération de données
    Par étudiant49 dans le forum VB.NET
    Réponses: 2
    Dernier message: 01/05/2011, 09h17
  2. Problème lors de la récupération des données
    Par hanadi. dans le forum Administration
    Réponses: 1
    Dernier message: 18/01/2010, 09h50
  3. [Linq to Sql] Problème d'insert en base de données
    Par Nyphel dans le forum Accès aux données
    Réponses: 3
    Dernier message: 21/11/2008, 23h31
  4. [MySQL] problème lors de la récupération des données à modifier mysql
    Par brajae85 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 06/05/2008, 01h36
  5. [JSF & RichFaces] problème binding
    Par drim dans le forum JSF
    Réponses: 9
    Dernier message: 19/04/2008, 13h24

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