2010-11-30 25 views
2

Comme suggéré il y a un temps dans une autre question, j'ai besoin d'injecter un haricot dans un autre haricot.JSF - Problème d'injection de haricot

, je fais ce qui suit:

@ManagedBean 
@RequestScoped 
public class Articles { 
    private String selectedMenu; 

    @ManagedProperty(value="#{user}") 
    private UserManager user; 

    @PostConstruct 
    public void init() { 
     if(selectedMenu==null || selectedMenu.trim().isEmpty()) { 
      this.selectedMenu="0"; 
     } 
    } 

    // now here i should access to user.methods 

    // getter and setter 
} 

En fait, je ne peux pas accéder aux données UserManager. Je reçois ces erreurs:

NAVIGATEURmalformedXML: INVALID_STATE_ERR: Dom Exception 11

SERVEUR LOG 30-nov-2010 15.36.58 javax.faces.component.UIViewRoot$ViewMap put AVVERTENZA: Setting non-serializable attribute value into ViewMap: (key: profileSelector, value class: model.ProfileSelector) 30-nov-2010 15.36.59 com.sun.faces.mgbean.BeanManager preProcessBean GRAVE: JSF will be unable to create managed bean articles when it is requested. The following problems where found: - Property user for managed bean articles does not exist. Check that appropriate getter and/or setter methods exist. 30-nov-2010 15.36.59 com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback visit GRAVE: com.sun.faces.mgbean.ManagedBeanCreationException: Unable to create managed bean articles. The following problems were found: - Property user for managed bean articles does not exist. Check that appropriate getter and/or setter methods exist.

Si je commente @ManagedProperty(value="#{user}") et private UserManager user; que je ne vois pas d'erreur. Alors c'est le problème. Qu'est-ce que j'ai tort?

Vive

+0

Où vois-tu exactement cette erreur? –

+0

Je vois cette erreur quand j'essaye d'accéder à ce bean! – markzzz

+1

@org signifiait * où *, pas * quand *. C'est à dire. dans les journaux du serveur, ou dans le webbrowser, ou dans le ciel, etc – BalusC

Répondre

5

malformedXML: INVALID_STATE_ERR: Dom Exception 11

Cette erreur XML indique une erreur dans votre vue (XHTML), pas dans la fève. Je ne comprends pas pourquoi cette erreur s'est produite, mais vous avez probablement une arborescence de composants assez complexe avec plusieurs attributs rendered dont un dépend de la propriété user qui a causé un mauvais état dans l'arborescence XML du côté client.

En ce qui concerne les journaux du serveur:

AVVERTENZA: Réglage non sérialisable valeur d'attribut dans viewmap: (clé: profileSelector, valeur classe: model.ProfileSelector)

Cette ne fait pas nécessairement de mal, mais pour le réparer, vous devez laisser la classe implémenter java.io.Serializable.

public class ProfileSelector implements Serializable {} 

De cette façon, le serveur sera en mesure de transférer l'instance sur le réseau et/ou stocker l'instance sur la place de harddisk en mémoire chaque fois que nécessaire (lorsque le serveur redémarre ou est placé dans un cluster de serveurs).


30-nov-2010 15.36.59 com.sun.faces.mgbean.BeanManager preProcessBean GRAVE: JSF sera incapable de créer des articles gérés de haricots quand il est demandé. Les problèmes suivants ont été détectés: - L'utilisateur de la propriété pour les articles de haricot managé n'existe pas. Vérifiez que les méthodes getter et/ou setter appropriées existent.

Cela s'explique aussi bien. Assurez-vous qu'il existe des méthodes getter/setter correctes pour la propriété user du bean géré portant le nom articles.

@ManagedBean 
@RequestScoped 
public class Articles { 

    @ManagedProperty(value="#{user}") 
    private UserManager user; 

    public UserManager getUser() { 
     return user; 
    } 

    public void setUser(UserManager user) { 
     this.user = user; 
    } 

} 

Vous pouvez si nécessaire laisser votre IDE les générer automatiquement. Dans Eclipse, vérifiez la section Source dans le menu contextuel de droite (Alt + Maj + S).


30-nov-2010 15.36.59 com.sun.faces.context.PartialViewContextImpl $ PhaseAwareVisitCallback visite GRAVE: com.sun.faces.mgbean.ManagedBeanCreationException: Impossible de créer des articles gérés de haricots. Les problèmes suivants ont été détectés: - L'utilisateur de la propriété pour les articles de haricot gérés n'existe pas. Vérifiez que les méthodes getter et/ou setter appropriées existent.

Ceci a le même problème.

+0

Donc, la propriété d'injection appelle un getter/setter. nom de l'instance du bean ". – markzzz

+0

J'ai résolu 2 de ces problèmes.Le dernier se produit encore (' com.sun.faces.context.PartialViewContextImpl $ PhaseAwareVisitCallback') – markzzz

+0

Si vous êtes certain que les méthodes getter/setter appropriées sont ajoutées, alors reconstruire, redéployer et redémarrer – BalusC