# session.removeAttribute



## PeterRRR (26. Mai 2009)

Hallo!

Ich hab eine kleine Webanwendung geschrieben, die mehrere Eingaben vom Benutzer entgegennimmt und in einem Session-Bean speichert. Die Seiten sind alle mittels JSF aufgebaut.
Am Ende werden die Daten verarbeitet und der Benutzer bekommt ein Ergebnis ausgegeben. Jetzt möchte ich, dass sofort nach Ausgabe des Ergebnisses das Bean aus der Session entfernt wird.
Ich habs probiert mit:

```
<% session.removeAttribute("myBean"); %>
```
ganz am Ende der Seite, aber dann werden keine Ergebnisse mehr angezeigt. Sobald die oben genannte Zeile nicht in der Seite steht, funktioniert es einwandfrei.
Welche Möglichkeit gibt es, das Session-Bean zu entfernen?
Danke schon jetzt für jede Hilfe!

lg Peter


----------



## Noctarius (26. Mai 2009)

Ich kenn mich mit JSF nicht aus, aber vielleicht gibt es im Lifecycle der Seite eine Methode die nach dem "Rendern" der Page ausgeführt wird. Hier könntest du das Attribute da löschen.

Alternativ kann man bei manchen Frameworks Beans in der Session oder im Request bekannt machen. Session ist dann halt persistent und Request nur bis Ende der Requestverarbeitung, was deinem Wunsch entsprechen würde.


----------



## gex (27. Mai 2009)

Von der Verwendung von Scriptlets bei JSF Anwendungen kann ich nur abraten, die haben spätestens bei Verwendung von JSF nichts mehr zu suchen (Wenn man nicht mit JSP sondern mit Facelets arbeitet, hat man die eh nicht mehr).

Könntest einen JSF Phase Listener implementieren, dürfte keine grosse Sache sein:
Phase Listener

Bei getPhaseId RENDER_RESPONSE zurückgeben und innerhalb der afterPhase das entfernen des Attributes aus der Session einpflegen. Damit du kontrollieren kannst, ob das Attribut überhaupt entfernt werden soll musst du irgend ein Flag in der entsprechenden Action-Method setzen, entweder in den Request, oder im zu löschenden Attribut selbst.


----------



## PeterRRR (1. Jun 2009)

Danke für eure Antworten! Leider konnte ich es noch nicht ausprobieren, da ich jetzt einige Tage nicht zu Hause war, aber ich werde es demnächst mal probieren - ich bin mir sicher, es wird funktionieren.
Danke nochmal!

lg Peter


----------

