In einer Bean-Methode an ndere Beans kommen

Status
Nicht offen für weitere Antworten.

SaschaLR

Bekanntes Mitglied
Hi!

Wie kann ich in einer Methode in einer Bean eine andere Bean "holen"?

Beispiel: Ich habe eine personBean, die eine Person repräsentiert und möchte diese nun in die DB schreiben. Dazu verwende ich eine Methode aus einer personManagerBean.

Wie komme ich nun an die frisch gefülle personBean?

Mein Gendankengang reicht in etwa so weit:

Code:
public void savePerson(ActionEvent ae){
   Person p = (Person) FacesContext.getCurrentInstance().get ..... ("personBean");
   /* Hibernate init */
   session.save(p);
   session.getTransaction().commit();
}

Wie komme ich konkret an die personBean?

Vielen Dank!
Sascha[/code]
 
Hallo,

wenn die Bean in einem Kontext liegt (z.B. Session oder Application) und damit gemanaged wird, ist sie dort gebunden und kann über folgenden Befehl von dort abgefragt werden:

Code:
getApplication().createValueBinding("#{sessionScope.visit}").getValue(getFacesContext());

(in diesem Beispiel eine "visit" Bean, die im Sesioncontext lliegt).

Alternativ kann der VariableResolver genutzt werden:
Code:
Object obj = FacesContext.getCurrentInstance().getApplication().getVariableResolver().resolveVariable(FacesContext.getCurrentInstance(), "testBean");
TestBean tb = (TestBean)obj;

Ich hoffe, dass das die Frage beantwortet

Gruß

Arndt Schönberg


http://www.schoenberg-solutions.de/
 
Hi,
generell würde ich es versuchen zu vermeiden aus einer Bean eine andere Bean aufzurufen. Dies führt zu (mMn) unnötigen Abhängigkeiten. Wenn Du eine JSP hast die deine personBean repräsentiert, also die Daten aufbereitet, kannst Du doch in der zugehörigen JavaBean dein person-Objekt "zusammenbauen" und dem Manager übergeben.

Cu
Alex
 
Naja... mein Gedankengang war... wie heisst das noch? One Class, one responsibility?!

Und ob es vom Design her klug ist oder nicht.. naja... ich lerne da besser aus Fehlern, als aus (korrekten) Ratschlägen 🙂

Gruß,
Sascha
 
SaschaLR hat gesagt.:
Naja... mein Gedankengang war... wie heisst das noch? One Class, one responsibility?!
Da hast Du Recht und dies ist in meinem Beispiel gegeben 🙂. Deine Klasse ist nur für deine eine spezielle JSP verantwortlich. Dazu gehört es mMn auch, Personendaten, die auf dieser JSP eingetragen und mit einem Submit Button zur Speicherung bestätigt wurden, alleine in diesem Bean zu behandeln (also Daten in ein person DTO zu packen und deinem "DB Manager" zu übergeben).

Letztendlich isses ja auch egal bzw. ich als Amateurprogger kann mich da täuschen. Ich wollte nur mal meine unqualifizierte Meinung zu diesem Thema abgeben :wink:.

Cu
Alex
 
Jetzt versteh ich dich ein wenig mehr... aber die Bean wird auf 5 oder mehr Seiten verwendet 🙂

Gruß,
Sascha
 
@ Schönberg

Das hat genau gepasst! Genau das habe ich gesucht! Vielen Dank!!!

Gruß, SaschaLR
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben