Hallo,
ich habe zwei ManagedBeans und möchte eine Variable, die in der ersten ManagedBean erstellt/belegt wurde, in der zweiten nutzen - im Folgenden die hoffentlich entscheidenden Quelltextausschnitte:
Ich habe mir viele Tutorials dazu durchgelesen, auch in die Reference Documentation geschaut - meines Erachtens dürfte der Quelltext korrekt sein. Rufe ich die entsprechende XHTML-Seite auf, meldet Apache Tomcat eine Exception:
Kann mir jemand erklären, warum dieses Dependency-Injection nicht funktioniert?
Darüber hinaus würde es mich interessieren, ob man - siehe auskommentierte Quelltextteile oben - statt einer ganzen ManagedBean auch nur ein Attribut injizieren kann. Im obigen Fall bräuchte ich nur die facade, um Methoden aus der Serviceschicht aufrufen zu können. In sämtlichen Tutorials, die ich fand, geht es beim Thema Initialisieren über ManagedProperty stets nur um fixe Werte oder ganze ManagedBeans, nicht aber um einzelne Eigenschaften anderer Beans.
ich habe zwei ManagedBeans und möchte eine Variable, die in der ersten ManagedBean erstellt/belegt wurde, in der zweiten nutzen - im Folgenden die hoffentlich entscheidenden Quelltextausschnitte:
Java:
@ManagedBean
@SessionScoped
public class Index {
private PersistenceFacade facade = null;
public Index() {
if (facade == null) {
facade = PersistenceFacadeFactory.getFactory().createFacade();
}
}
...
}
Java:
@ManagedBean
@ViewScoped
public class ArtikelAnlegen {
/* @ManagedProperty(value = "#{index.facade}")
private PersistenceFacade facade;*/
@ManagedProperty(value = "#{index}")
private Index index;
private Artikel artikel;
public ArtikelAnlegen() {
/*artikel = facade.createArtikel();*/
artikel = index.getFacade().createArtikel();
}
/* public void setFacade(PersistenceFacade facade) {
this.facade = facade;
}*/
public void setIndex(Index index) {
this.index = index;
}
...
}
Ich habe mir viele Tutorials dazu durchgelesen, auch in die Reference Documentation geschaut - meines Erachtens dürfte der Quelltext korrekt sein. Rufe ich die entsprechende XHTML-Seite auf, meldet Apache Tomcat eine Exception:
Gemäß meinen unzähligen Debug-Versuchen liegt das wohl daran, dass facade bzw. index auf null steht, obwohl das Attribut in Klasse Index beim Aufruf der Seite korrekt initialisiert wird.javax.servlet.ServletException: Klasse verkaufssystem.ps.ArtikelAnlegen kann nicht instanziiert werden.
Kann mir jemand erklären, warum dieses Dependency-Injection nicht funktioniert?
Darüber hinaus würde es mich interessieren, ob man - siehe auskommentierte Quelltextteile oben - statt einer ganzen ManagedBean auch nur ein Attribut injizieren kann. Im obigen Fall bräuchte ich nur die facade, um Methoden aus der Serviceschicht aufrufen zu können. In sämtlichen Tutorials, die ich fand, geht es beim Thema Initialisieren über ManagedProperty stets nur um fixe Werte oder ganze ManagedBeans, nicht aber um einzelne Eigenschaften anderer Beans.