Methode einer Bean aus anderer Bean aufrufen

Status
Nicht offen für weitere Antworten.

Ed77

Mitglied
Hi. Ich habe ein Problem. Ich möchte die Werte einer Bean in einer anderen Bean über die Setter neu setzen. Bisher habe ich es so gemacht:

Bean1 bean = new Bean1();
bean.setWert("wert");

Das hat auch funktioniert, allerdings nur weil ich die Variablen in Bean1 static deklariert habe.
Wie bekomme ich das Ganze ohne static hin? Ich muss ja irgendwie die aktuelle Referenz übergeben per this oder? Funktioniert irgendwie aber nicht?
Ich arbeite übrigens mit myfaces und tomahawk. Evtl gibt es dort noch eine andere Lösung.

Wäre für jede Hilfe dankbar (am besten mit Beispielcode).
 
Bean1 bean = new Bean1();
bean.setWert(anderesBean.getWertX());
oder
bean.setWert(this.getWertX());
 
Funktioniert leider nicht. Die andere Bean bleibt leer.
Habe jetzt so:
Code:
public class Bean1
{ 
   private String _name;
   public String getName() 	{ return _name; } 
   public void setName(String name) 	{ _name = name; }
}

public class Bean2
{ 
   private String _name2;
   Bean1 bean = new Bean1();
   _name2 = "Egon";	
   bean.setName(this.getName2());

   public String getName2() 	{ return _name2; } 
   public void setName2(String name2) 	{ _name2 = name2; }
}
 
> Die andere Bean bleibt leer.

wie stellst du das fest?

----

der Code der Klasse Bean2 ist gar nicht kompilierbar/ ausführbar,
direkt in der Klasse darf kein Code wie
> _name2 = "Egon";
stehen, der gehört in Methoden oder Konstruktoren
 
wie stellst du das fest?
Weil meine JSP nichts anzeigt.
der Code der Klasse Bean2 ist gar nicht kompilierbar/ ausführbar
Stimmt sorry. Der Code steht aber natürlich in einer Methode.
The BalusC Code: Communication in JSF
Du meinst bestimmt den Absatz "Returning current managed bean instance of self". Das hatte ich auch schon probiert, bekomme allerdings immer eine NullPointerException. Es funktioniert weiterhin nur mit static ... ;(
 
Versuch doch mal so:
Java:
 DeineBean deineBean= (DeineBean) ContextUtil.getValueBinding("deineBean");
dann kannste sie verwenden
 
Du meinst bestimmt den Absatz "Returning current managed bean instance of self". Das hatte ich auch schon probiert, bekomme allerdings immer eine NullPointerException. Es funktioniert weiterhin nur mit static ...

Nein, sondern "Accessing another managed bean", da werden 8 (!) Wege beschreiben wie das geht.. 😉
Könnte natürlich sien dass es mittlerweile elegantere/einfachere Wege gibt.

Ansonsten: Wie fit bist du in Java?
Wenn du noch Anfänger bist, ist JSF bzw. WebAnwendungen in Java allgemein nix für dich, ausser du suchst Frust (nicht böse gemeint).
 
> Weil meine JSP nichts anzeigt.

na das läßt sich aus deinen einfachen Code-Ausschnitten ja nicht herleiten,
da könnten tausend andere Dinge schiefgehen, z.B. ein ganz anderes Bean der gleichen Klasse verwendet werden

gib z.B. zum Namen zusätzlich den hashCode aus, um zu erkennen, um welches Objekt sich handelt

public String getName() { return _name + " - " +hashCode(); }

macht sicher nur Sinn, wenn du auch während des vermeintlichen Setzens prüfen kann, in welchem Objekt gespeichert wird,
Logging oder Debugging sind das A und O jeder Entwicklung

----

in diesem Falle aber vielleicht auch kompliziert für dich,
poste mehr von dem JSP, allen Verknüpfungen, Weiterleitungen, Bean-Deklarationen, web.xml und was es nicht alles gibt,
muss aber wahrscheinlich dennoch jemand anders beantworten,

wenn's nach Standard-Tutorials wie dem obigen Link funktioniert, umso besser
 
Vielen Dank für Eure Anworten. Ich werde mir den Absatz "Accessing another managed bean" nochmal angucken. Den hatte ich vorher gar nicht gesehen 🙂
Mal sehen, ob es damit klappt.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben