# In einer Bean-Methode an ndere Beans kommen



## SaschaLR (25. Jun 2007)

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:


```
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]


----------



## Schönberg (25. Jun 2007)

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:


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

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

Alternativ kann der VariableResolver genutzt werden:

```
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/


----------



## WeirdAl (25. Jun 2007)

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


----------



## SaschaLR (26. Jun 2007)

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 (26. Jun 2007)

Ups, die Lösung ganz übersehen .. sorry!

Ich probiere es nachher mal aus und melde mich! Danke!!!!


----------



## WeirdAl (26. Jun 2007)

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


----------



## SaschaLR (26. Jun 2007)

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

Gruß,
Sascha


----------



## SaschaLR_ (27. Jun 2007)

@ Schönberg

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

Gruß, SaschaLR


----------

