2012-06-19 2 views
5

Ist dies die richtige Methode zum Speichern eines Werts in Sitzung in Struts2?Sitzung in Struts 2

Map<String, Object> session = ActionContext.getContext().getSession(); 
session.put("user", "USERNAME"); 
+6

können Sie das tun, aber der bevorzugte Weg ist durch die Implementierung der SessionAware-Schnittstelle. Lesen Sie [hier] (http://struts.apache.org/2.0.6/docs/how-do-we-get-access-to-the-session.html) und [hier] (http: // splitter. com.au/how-to-use-sessions-with-struts-2) für weitere Informationen. – Jasonw

+0

sehr hilfreiche Links, danke. –

+1

Das Abrufen des Sitzungsobjekts von actionContext ist kein Problem, da es auf TheadLocal implementiert ist, obwohl es keine gute Übung ist. –

Antwort

1

SessionAware Schnittstelle in Streben 2.x, braucht unsere Action-Klasse SessionAware Schnittstelle zu erhalten, um HTTP-Sitzungs-Verhalten in unsere Action-Klasse zu implementieren.

Wenn wir von der SessionAware-Schnittstelle implementieren, müssen wir die Methode setSession() von SessionAware in unserer Action-Klasse überschreiben. Wenn wir unsere Aktionsklasse von der SessionAware-Schnittstelle implementieren, injiziert struts 2 controller nicht genau das Sitzungsobjekt, sondern injiziert ein Map-Objekt mit ähnlichem Verhalten.

Map m; 
public void setSession(Map m) 
    { 
     this.m=m; 
    } 

public String execute() 
    { 
     m.put("user", "USERNAME"); 


     return SUCCESS; 
    }