2012-06-19 16 views
5

¿Es esta la forma correcta de almacenar un valor en sesión en Struts2?Sesión en Struts 2

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

puede hacer eso, pero el camino preferido es implementar la interfaz de SessionAware. Lea [aquí] (http://struts.apache.org/2.0.6/docs/how-do-we-get-access-to-the-session.html) y [aquí] (http: // splinter. com.au/how-to-use-sessions-with-struts-2) para más información. – Jasonw

+0

enlaces muy útiles, gracias. –

+1

Obtener el objeto de sesión de actionContext no es un problema porque está implementado en TheadLocal, aunque no es una buena práctica. –

Respuesta

1

interfaz SessionAware en puntales 2.x, nuestra clase de acción tiene que implementar la interfaz SessionAware con el fin de obtener un comportamiento de sesión HTTP en nuestra clase Action.

Si implementamos desde la interfaz de SessionAware, necesitamos sobrescribir el método setSession() por SessionAware en nuestra clase de acción. Si implementamos nuestra clase de acción desde la interfaz de SessionAware, el controlador struts 2 no inyecta exactamente el objeto de sesión, sino que inyectará un objeto Map con un comportamiento similar.

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

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


     return SUCCESS; 
    } 
Cuestiones relacionadas