2013-03-15 3 views
0

J'essaie d'accéder aux données du bean session dans le constructeur du bean géré. À cette fin, j'utilise l'annotation @ManagedProperty comme ci-dessous. Lorsque j'essaie d'accéder au constructeur, il donne java.lang.NullPointerException et le même morceau de code est accessible dans une autre fonction. Peut-être que je dois faire quelque chose de différent pour le constructeur. Quelqu'un pourrait-il me guider s'il vous plaît ce que je dois faire.Accès aux données du bean session dans le constructeur du bean géré JSF

@ManagedProperty(value="#{sessionBean}") 
private SelectCriteriaBean sessionData; 

// This is contructor 
public ModifyBusinessProcessBean() { 
    logger.debug(getSessionData().getSelectedBusinessProcessLevelZero());  
} 

// Another Function where the same code doesn't give error 
public anotherFunction() { 
    logger.debug(getSessionData().getSelectedBusinessProcessLevelZero());  
} 

Répondre

3

Vous ne devriez pas utiliser l'intérieur @ManagedProperty constructeur car il n'a pas encore été défini. Lorsque le bean géré est créé en premier, son constructeur est appelé, puis les propriétés gérées sont définies avec des setters. Vous devez utiliser la méthode annotée avec @PostConstruct comme on l'appelle après les propriétés sont définies:

@PostConstruct 
public void init() { 
    logger.debug(getSessionData().getSelectedBusinessProcessLevelZero()); 
} 
+0

Ha! Concurrence en action :) – skuntsel

+0

Oui, ça l'est vraiment. :) – partlov

+0

+1 pour la vitesse de frappe :) – skuntsel

3

C'est le comportement attendu.

@PostConstruct La méthode est exécutée juste après la construction du bean et l'injection de dépendances, telle que @ManagedProperty, a eu lieu. Ainsi, vos dépendances ne seront tout simplement pas disponibles dans le constructeur.

Ce que vous devez faire pour annoter une méthode avec @PostConstruct et reportez-vous à vos dépendances est une manière standard:

@PostConstruct 
public void init() { 
    injectedDependency.performOperation(); 
} 
Questions connexes