Anzeige

Spring Session löscht ein bestimmtes Objekt nicht


BLR

Erfahrenes Mitglied
#1
Hallo,

ich halte bestimmte Objekte in der Session.
Wenn ich ein bestimmtes Objekt ändere, dann möchte ich logischerweise das Objekt aus der Session entfernen und dann es neu aus der Datenbank holen.

Code in der abgekürzten Form:

Java:
@Controller
@SessionAttributes({"ObjektAA"}){
       @RequestMapping("/routeA")
        public handlerAA(HttpSession session){
              session.removeAttribute("ObjektAA"); //Das objekt ist jetzt null --> sehr gut
        }

   
        @RequestMapping("/routeB")
         public handlerBB(HttpSession session){
               session.getAttribute("ObjektAA");
        }
}
Wenn ich danach, direkt in dem Handler "handlerAA" nach diesem Attribut frage: session.getAttribute("ObjektAA"), dann wird tatsächlich "null" zurückgegeben. So dachte ich, dass das Objekt aus der Session innerhalb der ganzen WebAnwendung gelöscht ist.

Danach steuere ich über ein AJAX-Request den Handler "handlerBB" an und führe die selbe Abfrage noch mal:

Java:
@Controller
@SessionAttributes({"ObjektAA"}){
       @RequestMapping("/routeA")
        public handlerAA(HttpSession session){
              session.removeAttribute("ObjektAA");
        }

   
        @RequestMapping("/routeB")
         public handlerBB(HttpSession session){
               session.getAttribute("ObjektAA");  //Das eben gelöschte Objekt ist aufeinmal da!!! --> schlecht
        }
}
So wird mir das veraltete Objekt zurückgegeben.
Es scheint mir irgendwie, als ob ich im Handler "handlerAA" das veraltete Objekt "local", also nur innerhalb der Gültigkeit dieses Händlers "handlerAA" auf null gesetzt habe und nicht global, falls es Überhaupt bei einer Session sowas gibt.
Mit dem abgekürzten Code:
Java:
SessionStatus sessionStatus;
sessionStatus.setComplete();
Wird das veraltete Objekt zwar gelöscht, aber auch alle anderen Objekte auch.
Wie kann ich das gewünschte Objekt KOMPLETT löschen, unabhängig davon, welchen Händler ich danach ansteuere.

NACHTRAG:

Der Hashwert des gelöschten Objektes bleibt zwischen den Händlern der selbe, das bedeutet, obwohl ich das mit "removeAttribute" lösche, genau das Objekt dennoch in der HttpSession immer noch vorhanden ist.
 
Zuletzt bearbeitet:
Anzeige
Anzeige