# JavaBean lebt nicht lang genug



## HyperHyper (30. Aug 2006)

Habe eine Struts-Anwendung in welcher ich eine JavaBean von Webseite zu Webseite weiterleiten möchte. Allerdings klappt das nicht.

Habe hier meine JSP-Datei "main.jsp". In der steht folgendes:

```
<jsp:useBean id="person" scope="session" class="test.Person"/>
<jsp:setProperty name="person" property="*"/>

Ihr Name: <jsp:getProperty name="person" property="vorname"/>

[url="../main.jsp"]klick mich erneut[/url]
```

Wenn ich nun den Link anklicke wird die Webseite "main.jsp" zwar erneut geladen, allerdings existiert die Bean dann nicht mehr.

Dasselbe Problem habe ich auch, wenn ich einen Anker anklicke. Hier nochmal die main.jsp:

```
...
<jsp:useBean id="person" scope="session" class="test.Person"/>
<jsp:setProperty name="person" property="*"/>

Ihr Name: <jsp:getProperty name="person" property="vorname"/>

<a name="Anfang" id="Anfang"></a>

....

[url="#Anfang"][img]../grafiken/top.gif[/img][/url]
```

Jemand ne Idee warum meine JavaBean nur so kurzlebig ist?


----------



## RaoulDuke (30. Aug 2006)

Vielleicht weil


```
<jsp:setProperty name="person" property="*"/>
```

alle Felder wieder überschreibt?

Laut Doku:

http://java.sun.com/products/jsp/tags/syntaxref.fm13.html



> property="*"
> 
> Stores all of the values in the request object parameters (called request parameters) in matching Bean properties. The property names in the Bean must match the request parameters. The parameter names usually come from the elements of an HTML form, and the values come from the data the user enters.



Und wenn du über einen Link die Seite nochmal aufrufst, dann gibts keine Request Parameter und er bügelts wieder über?

Ich hab das aber ehrlichgesagt so noch nie verwendet und weiss nicht wie genau sich jsp:setProperty verhält.

Wenn du dich schon mit Struts beschäftigst... Eigentlich solltest du fast nie einen Grund haben in einer View Komponente soetwas wie da oben zu tun, das kann besser alles in die Action.


----------



## HyperHyper (30. Aug 2006)

Danke für die Antwort. Leider hat das entfernen von:


```
<jsp:setProperty name="person" property="*"/>
```

auch nichts gebracht. Ich brauch nur den Anker anklicken und schon sind alle Daten wieder weg.


----------



## RaoulDuke (30. Aug 2006)

Wo schreibst du denn eigentlich den Wert in die Bean? Wo erzeugst du die "test.Person" Bean und setzt sie unter dem Attribut-Namen "person" in die Session? Die JSP Ausschnitte die du gepostet hast machen ja nur Sinn wenn du die Bean woanders schon erzeugt und gefüllt hast.


----------



## HyperHyper (30. Aug 2006)

Also die Bean wird in einem Servlet erzeugt. Dort wird sie mit Daten gefüllt.


```
Person person = new Person();
person.setVorname("Markus");
....
request.setAttribute("person", person);
forward = mapping.findForward("success");
return forward;
```

Danach dann wird diese mit hilfe von Struts an "main.jsp" gesendet. Dort kommt die Bean auch gut an, ich kann deren Daten auslesen. Sobald ich aber nun zu einer anderen Seite springen möchte, sei es nur dieser Anker oder per <a href..> dann kommt diese Bean dort nicht mehr an (keine Daten vorhanden).

Ich überlege gerade ob ich hier irgendwie falsch vorgehe. Ich möchte halt das die Daten welche in der Bean vorhanden sind, weitergegeben werden auch zu anderen Webseiten meines Projektes. Ist die Bean der falsche Ansatz etwa?


----------



## KSG9|sebastian (31. Aug 2006)

Wenn du schon struts verwendest, warum nicht auch die struts-taglibs?


----------



## HyperHyper (31. Aug 2006)

KSG9|sebastian hat gesagt.:
			
		

> Wenn du schon struts verwendest, warum nicht auch die struts-taglibs?


Und welches Tag meinst du davon?


----------



## RaoulDuke (31. Aug 2006)

Na schau mal einger guck..


```
request.setAttribute("person", person);
```

Du speicherst deine Bean im Request Kontext und nicht im Session Kontext, also ist die Bean in dem Moment weg wo der Request endet.

Um zum Thema Struts Taglibs guckt du mal hier:

http://struts.apache.org/1.x/struts-taglib/index.html

Die benutzen sich ganz angenehm für solche Dinge.

Für dich wäre fürs erste bean:write ganz interessant.

http://struts.apache.org/1.2.x/userGuide/struts-bean.html#write[/quote]


----------



## HyperHyper (9. Sep 2006)

RaoulDuke hat gesagt.:
			
		

> Na schau mal einger guck..
> 
> 
> ```
> ...


[/quote]
Ok danke, wie genau speichere ich meine Bean im SESSION-Kontext?


----------



## RaoulDuke (9. Sep 2006)

```
request.getSession().setAttribute()
```


----------



## HyperHyper (9. Sep 2006)

Vielen dank!!


----------

