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 qui genere NullPointerException


Sujet :

JSF Java

  1. #1
    Membre confirmé Avatar de Iori Yagami
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 107
    Par défaut Managed Bean qui genere NullPointerException
    Bonjour tout le monde,
    je débute en JSF, et je veux l'apprendre en construisant une simple application web reposant sur DAO pattern.
    Donc, l'une des pages que je veux faire, contient l'affichage d'une liste de notes (avec dataTable) pour un étudiant dont le nom est défini dans la page précédente.
    Donc j'ai défini une classe ShowMarkByStudent qui contient 2 parametres student et marks (list de mark)
    un champs de texte va recuperer le showMarkByStudent.student.name
    et le commande button, permettra le passage a la page d'affichage voulue.
    J'ai défini showMarkByStudent comme session managed bean dans faces-config.
    Lors de l'execussion, le code génére une NullPointerException sous prétexte que l'élément student est null!

    Pourriez vous me trouver la faute s'il vous plait? merci

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    dans le constructeur de ton managed bean il faut que tu initialises student

  3. #3
    Membre confirmé Avatar de Iori Yagami
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 107
    Par défaut
    je les ai meme mis dans un initializer block qui s'execute avant le constructeur lui meme, et ça n'a pas marché
    en fait, je viens de découvrir que je ne doi pas déclarer student comme property du managed bean, pourquoi? je n'ai absolument aucune idée!
    Apparement, les propriétes déclarées dans faces-config, sont mise null automatiquement, ce qui génére le NullPointerException.
    Ne pas les declarer, et les instancier dans le constructeur du bean, résoudra le problème.

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    "dans un nitializer block qui s'execute avant le constructeur lui meme"

    impossible ...comment veux-tu faire appel à une méthode avant le constructeur lui même ? (a part si tu y fais appel dans le constructeur)

    et si tu déclares tes managed property dans ton managed bean elles ne seront pas null (exemple les services spring)

    mais il ne faut pas confondre managed property qui sont des propriétés manageé par jsf donc des bean avec de simple property utilisé uniquement dans ton bean dont le cyle de vie ne doit pas être managé par jsf

  5. #5
    Membre confirmé Avatar de Iori Yagami
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 107
    Par défaut
    impossible ...comment veux-tu faire appel à une méthode avant le constructeur lui même ? (a part si tu y fais appel dans le constructeur)
    Je suis désolé pour le retard. voila, comme réponse à ta question, tu peux essayer ce code, pour comprendre les blocks d'initialisation.
    le static différe du fait qu'il est appelé une seule fois lors du chargement de la classe, c'est à dire lors de l'instatiation du premier objet.

    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
     
    public class Test {
     
    	private String s = null;
     
    	static 
    	{
    		// This Block is called first
    		System.out.println("This Block is called first");
    	}
     
    	{
    		// This Block is called second
    		System.out.println("This Block is called second");
    		s = "Initialized";
    	}
     
    	public Test() {
    		// This block is called thrid
    		System.out.println("This block is called thrid");
    		if (s != null) System.out.println("s is already : "+s);
    	}
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		new Test();
     
    	}
     
    }
    Revenons à l'autre histoire, la voila devant moi, je déclare un property pour un managed bean et du coup, on me génére NullPointerException. Peut être que je devrait l'initialiser, c'est à dire lui associer une valeur dés le debut. Mais sinon, ça marche pas. Alors je me contente de déclarer le bean lui même seulement.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/08/2012, 18h11
  2. [MySQL] Base de données qui génère des histogrammes, courbes etc. Comment ?
    Par tonguim dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/08/2006, 18h13
  3. utilisation d'un managed bean par un autre
    Par Romain93 dans le forum JSF
    Réponses: 6
    Dernier message: 28/07/2006, 10h29
  4. Logiciel qui genere des diagrams UML
    Par scifire dans le forum EDI et Outils pour Java
    Réponses: 4
    Dernier message: 07/04/2006, 14h24
  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