JSF - Bean-injection-Probleme
Vorgeschlagen, die von einem Benutzer her, in einer anderen Frage, die ich brauche, um zu injizieren, wird ein bean in einer anderen bean.
So, ich Tue das folgende :
@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
}
In der Tat, ich kann nicht Zugang zu UserManager Daten. Ich bekomme diese Fehlermeldung :
BROWSER malformedXML: INVALID_STATE_ERR: Dom Exception 11
SERVER-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.
Wenn ich kommentieren @ManagedProperty(value="#{user}")
und private UserManager user;
als ich sehe keine Fehler. So, dass ist das problem. Was mache ich falsch?
Cheers
- wo sehen Sie diese Fehlermeldung genau ?
- Ich sehe den Fehler, wenn ich versuche, Zugang zu dieser Bohne!
- gemeint ist, wo, nicht Wann. I. e. in den server-logs, oder im webbrowser oder in den Himmel, etc.
- + poste die vollständige Fehlermeldung zusammen
- Haha
in the sky
rockt!! Ich stellte Sie die Fehlerdetails in das Thema 🙂 vielen Dank Leute - Ich denke, es versuchen
user
alsgetUser
odersetUser
. In der Tat, ich muss die Instanz der bean UserManager (@ManagedBean(name="user")
- Überprüfen Sie aktualisierte Antwort vergleichen Sie es mit Ihrer Umsetzung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese XML-Fehler deutet auf einen Fehler in Ihrer Ansicht (XHTML), nicht die Bohne. Ich verstehe nicht, warum dieser Fehler aufgetreten ist, aber wahrscheinlich hast du eine Recht komplexe Komponente Baum mit mehreren
rendered
Attribute, von denen eines je nachuser
Eigenschaft, die verursacht, die falsch in die XML-Struktur in der client-Seite.Als der server-logs:
Diesem nicht unbedingt Schaden, sondern um es zu beheben, müssen Sie lassen Sie die Klasse implementieren
java.io.Serializable
.Diese Weise wird der server in der Lage sein zu transfer die Instanz über das Netzwerk und/oder speichern Sie die Instanz auf der Festplatte statt im Speicher, wenn notwendig (wenn der server neu gestartet wird, oder in einem server-cluster).
Dies ist selbsterklärend, wie gut. Sicherzustellen, dass es ordnungsgemäß sind getter/setter-Methoden für die Eigenschaft
user
von der managed bean mit dem Namenarticles
.Können Sie, wenn notwendig, lassen Sie Ihren IDE autogenerate Sie. In Eclipse, überprüfen Sie die Quelle Abschnitt in der rechten Maustaste Kontext-Menü (Alt+Shift+S).
Dieser hat das gleiche problem verursachen.
com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback
)this.user=this
, weil es die Notwendigkeit zu erkennen, die user-Instanz, wenn es wieder durch die getter), aber ich bekomme die Dritte Fehlermeldung. Auch jetzt (durch hinzufügenimplements Serializable
), habe ich einige weitere Fehler, wieCannot serialize session attribute com.sun.faces.renderkit.ServerSideStateHelper.LogicalViewMap for session 4B49A9591CAC0968C79EE88BD303533A java.io.NotSerializableException: model.ProfileSelector
this.user = this
? Dies sollte dazu geführt haben, in einem Kompilierungsfehler. Sind Sie mit dem hinzufügen der getter/setter auf dieArticles
Klasse?UserManager
bean. Auch, was sollte es zurück aufpublic UserManager getUser() { return user; }
? Nein, ich habe nicht auf Artikel (warum?)user
auf derArticles
Bohne! Sie brauchen Sie nicht in dieUserManager
bean überhaupt. Ich erweiterte das code-Beispiel.