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 :

Managed Bean : incompréhensible.


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut Managed Bean : incompréhensible.
    Voila j'avais pour habitude de déclarer mes managed beans bien gentillement dans mon faces-config pour pouvoir les utiliser dans mon JSF quand tout à coup j'ai eu un problême pour une classe utilisant mySQL et des connections etc un peu compliqué tout ça...
    J'ai donc décidé d'épurer le code, mais toujours une erreur...

    Je suis un peu fatigué alors je supprime tout et ne laisse plus que les attributs et leurs getters setters et revoila
    "org.apache.jasper.JasperException: An exception occurred processing JSP page /Result.jsp at line 135"
    =>java.lang.NullPointerException

    Je copie-colle alors le contenu d'une de mes classes managed beans que j'utilise déja (je copie colle mon sitemsbean qui marche très bien, dans connecting : bref ces 2 classes sont identiques avec un nom de constructeur différent c'est tout).

    MESSAGE D'ERREUR IDENTIQUE!!!

    FacesContext fc = FacesContext.getCurrentInstance();
    SItemsBean bean = (SItemsBean) fc.getExternalContext().getSessionMap().get("sItemsBean");

    bean.setNumber(nbresults); (passe sans prob)

    Connecting bean2 = (Connecting) fc.getExternalContext().getSessionMap().get("connecting");

    line 135: bean2.setNumber(nbresults);
    //erreur org.apache.jasper.JasperException: An exception occurred processing JSP page /Result.jsp at line 135
    cause mère=>java.lang.NullPointerExeption
    Je devins alors fou... Depuis j'essaye de déclarer d'autres managed beans... mais impossible de les utiliser T_T. Pourtant les fonctions sont reconnus lorsque je tape CTRL+espace, rien n'est souligné en rouge, il "trouve" le bean mais quand il arrive à la ligne d'exécution de la méthode (de n'importe quelle méthode) il plante toujours de la même façon.
    D'anciens Managed Beans que j'avais déclaré marche mais pas les nouveaux...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut
    Bref je viens de capter que mon Object (mon connecting) est de valeur NULL (avec une technique de type if object==null, je sais je vous épate) et je ne comprends pas pourquoi...
    Faut-il déclarer ces managed beans d'une quelconque façon avant de les utiliser ? Si oui, comment ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut
    Je ne sais pas si c'est un bug la mais c'est vraiment bizarre.

    Je viens de capter qu'en déclarant un h:Bouton JSF dans la page d'avant incluant en value un champ de mon Managed Bean mon ManagedBean ne plantait pas, ça marchait.

    Je me dis que ça doit l'initialiser et faire qu'il ne soit plus à la valeur nulle...
    Mais même QUAND JE SUPPRIME après ça mon bouton ca marche encore!!!
    Et cette méthode est valable avec tous mes Beans.

    La sèrieusement je supplie pour une explication.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut
    Bonjour DeigN, alors la voila ton explication.

    Lorsque tu utilises l'expression,
    Connecting bean2 = (Connecting) fc.getExternalContext().getSessionMap().get("connecting");

    ton bean2, s'il n'a pas été déclaré avant lors de cette même session (entre autres par un boutton JSF ou lors d'un scriplet de la même session), ne pointera sur rien, il faudra alors que tu rajoutes:
    bean2=new Connecting();

    pour faire pointer ton bean vers un Object alloué en mémoire et pouvoir utiliser les méthodes type bean2.camarchemaintenant();

    Voila, bon courage pour la suite!

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Sinon il y'a plus simple, tu laisse à JSF créer le bean:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    FacesContext context = FacesContext.getCurrentInstance().getCurrentInstance();
     
    ManagedBean bean = (ManagedBean ) context.getApplication().getExpressionFactory().createValueExpression(context.getELContext(), "#{managedBean }",ManagedBean.class).getValue(context.getELContext());

Discussions similaires

  1. JSF: Can't set managed bean property: 'Nom'.
    Par Laurent68 dans le forum JSF
    Réponses: 4
    Dernier message: 11/06/2009, 16h28
  2. Diffèrence Managed bean et backing bean
    Par BRAUKRIS dans le forum JSF
    Réponses: 2
    Dernier message: 25/11/2006, 07h49
  3. Réponses: 3
    Dernier message: 15/09/2006, 14h01
  4. utilisation d'un managed bean par un autre
    Par Romain93 dans le forum JSF
    Réponses: 6
    Dernier message: 28/07/2006, 10h29
  5. Réponses: 4
    Dernier message: 10/03/2006, 17h25

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