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 :

Connecter JSF à des EJB


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut Connecter JSF à des EJB
    Bonjour,

    je cherche à connecter des pages JSF à des EJB. Cependant, je n'y arrive pas.

    J'ai écrit un bean qui, pour une propriété précise, va chercher des données via un EJB (session, stateless) lorsque sa valeur est null. Or un appel à cette méthode plante immédiatement ma page.

    J'obtiens les erreurs suivantes :

    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
    11:49:39,390 ERROR [UIComponentTagUtils] Component javax.faces.component.UISelectItems is no ValueHolder, cannot set value.
    11:49:39,390 WARN  [/pcbw] /pcbw/choixMedecin.faces: 
    javax.faces.FacesException: Value binding 'null'of UISelectItems with component-path {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /choixMedecin.jsp][Class: javax.faces.component.html.HtmlSelectOneMenu,Id: _id0][Class: javax.faces.component.UISelectItems,Id: _id1]} does not reference an Object of type SelectItem, SelectItem[], Collection or Map but of type : null
    	at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:421)
    	at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:234)
    	at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:352)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:107)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
    	at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:830)
    	at org.mortbay.jetty.servlet.jsr77.Jsr77Filter.doFilter(Jsr77Filter.java:77)
    	at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
    	at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471)
    	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
    	at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
    	at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
    	at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
    	at org.mortbay.http.HttpServer.service(HttpServer.java:909)
    	at org.jboss.jetty.Jetty.service(Jetty.java:456)
    	at org.mortbay.http.HttpConnection.service(HttpConnection.java:816)
    	at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:982)
    	at org.mortbay.http.HttpConnection.handle(HttpConnection.java:833)
    	at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
    	at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
    	at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
    Caused by: org.apache.jasper.JasperException: Value binding 'null'of UISelectItems with component-path {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /choixMedecin.jsp][Class: javax.faces.component.html.HtmlSelectOneMenu,Id: _id0][Class: javax.faces.component.UISelectItems,Id: _id1]} does not reference an Object of type SelectItem, SelectItem[], Collection or Map but of type : null
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
    	at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:830)
    	at org.mortbay.jetty.servlet.jsr77.Jsr77Filter.doFilter(Jsr77Filter.java:77)
    	at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
    	at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471)
    	at org.mortbay.jetty.servlet.Dispatcher.dispatch(Dispatcher.java:286)
    	at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:171)
    	at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:415)
    	... 20 more
    Voici mon code associé à l'erreur :
    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
    public class MonBean {
      private Collection dispensateurs = new ArrayList();
      private Collection dispensateursData = new ArrayList();
      public Collection getDispensateurs() {
        log.debug("entering getDispensateurs()");
        if (dispensateurs.size() == 0) {
          Collection dispensateursData = getDispensateursData();
          Collection tmpDispensateurs = new ArrayList();
          if (dispensateursData != null) {
            log.debug("Size of dispensateursData : " + dispensateursData.size());
            for (Iterator it = dispensateursData.iterator(); it.hasNext();) {
              DispensateurObject disp = (DispensateurObject) it.next();
              SelectItem si = new SelectItem(disp, disp.getNom() + ", "
                  + disp.getPrenom());
              tmpDispensateurs.add(si);
            }
            dispensateurs = tmpDispensateurs;
          }
          else
          {
            log.debug("dispensateursData is empty.");
          }
        }
        log.debug("leaving getDispensateurs()");
        return dispensateurs;
      } // fin getDispensateurs
      public Collection getDispensateursData() {
        if (dispensateursData == null) {
          try {
            dispensateursData = MonEJB.getInstance().getDispensateurs();
            if (log.isDebugEnabled())
              log.debug(dispensateursData.size() + " dispensateurs");
          } catch (ServiceException e) {
            log.warn("Impossible de charger les dispensateurs", e);
            dispensateursData = null;
          }
        }
        return dispensateursData;
      } // fin getDispensateursData
    } // fin class
    getDispensateurs étant un cache pour getDispensateursData.

    Le plus étrange étant qu'aucun de mes messages de log n'est affiché alors que lors d'appels à d'autres méthodes, ils sont correctement affichés (niveau debug). J'ai donc l'impression que la méthode getDispensateurs() n'est jamais appelée.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Par défaut
    A priori tu as des porblémes avec ton selectItem

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SelectItem si = new SelectItem(disp, disp.getNom() + ", "
                  + disp.getPrenom());
    As tu ecrit un converter JSF pour ton objet disp. Il te faut un converter Objet Disp ==> String et inversement (String ==> Objet Disp)

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Apparemment, non seulement, je n'avais pas fait de convertisseur, mais en plus, il y avait un truc que j'avais pas compris dans ma page JSP et qui m'a forcé à refaire toute mon approche. vive les codes sources du bouquin ^^

Discussions similaires

  1. Intégration des EJB dans JSF
    Par geeksDeve dans le forum JSF
    Réponses: 2
    Dernier message: 02/01/2013, 20h49
  2. [EJB] [Débutant] Portabilité des EJB
    Par ruff15 dans le forum Java EE
    Réponses: 7
    Dernier message: 23/01/2008, 17h47
  3. Compiler, Déployer des EJB avec ANT ?
    Par Johnbob dans le forum ANT
    Réponses: 3
    Dernier message: 28/09/2004, 16h04
  4. [JONAS][EJB]erreur sur la construction des EJB
    Par silvermoon dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 04/06/2004, 18h53
  5. connection/deconnection des sockets
    Par yotasse dans le forum Développement
    Réponses: 3
    Dernier message: 17/02/2004, 12h08

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