java session struts2 request struts-action

java - ¿Cómo utilizar los parámetros, las solicitudes y los objetos de sesión presentes en ActionContext?



session struts2 (2)

primero

ActionContext''s Request object is equivalent to the Request object in Servlets

Segundo

Si está utilizando framework como struts. Es una mala practica No necesita crear objetos HttpServletRequest desde ServletActionContext para obtener los parámetros de solicitud. Simplemente declare los parámetros de solicitud en la clase de acción y los captadores y ajustadores de escritura para ellos obtendrán los valores en ellos.

ACTUALIZAR

Si quería su parámetro de solicitud en la clase de acción, puede hacerlo así:

public class MyAction extends ActionSupport implements SessionAware{ private String operatorId; private Map<String, Object> session; //Getter and setters public String getOperatorId() { return operatorId; } public void setOperatorId(String operatorId) { this.operatorId = operatorId; } @Override public void setSession(Map<String, Object> session) { this.session = session; } }

Entonces, si quisiera usar operatorId cualquier lugar, todo lo que haré es getOperatorId() o use operatorId directamente. :)

Si encuentro la implementación de SessionAware en la clase Action más razonable, ya que puedo acceder directamente a objetos de sesión como @Andrea ha mencionado ... Ahora puedo usar directamente session.put("OperatorId", operatorId); y session.put("AnalysisNames",analysisNames);

Aquí en este código estoy usando ActionContext para obtener Session y ServletActionContext desde el objeto Request. Siento que esta es una mala práctica, ya que uno debe usar ActionContext solo para el objeto Request.

¿El objeto Request de ActionContext es equivalente al objeto Request en Servlets? En caso afirmativo, ¿cómo obtener los parámetros de solicitud usándolo?

Map session = (Map) ActionContext.getContext().getSession(); HttpServletRequest request = ServletActionContext.getRequest(); String operatorId = request.getParameter("operatorId"); session.put("OperatorId", operatorId); // getting hashmap from Bean analysisNames= slsLoginDetailsRemote.getAnalysisNamesIdMap(); // sending map for multiselect session.put("AnalysisNames",analysisNames);


En Struts2, el Mapa de sesión y el Mapa de solicitud son envoltorios para los objetos HttpServletRequest y Session subyacentes.

Si solo necesita acceder a los atributos, use los contenedores.

Use ActionContext para obtenerlos (tanto los wrappers como los objetos HTTP subyacentes) solo si se encuentra dentro de un Interceptor o un POJO .

Si se encuentra dentro de una Action , la mejor práctica es implementar una Interfaz que llene automáticamente el objeto de su Acción:

Para obtener el contenedor de solicitud de mapa , use RequestAware

public class MyAction implements RequestAware { private Map<String,Object> request; public void setRequest(Map<String,Object> request){ this.request = request; } }

Para obtener el contenedor de Mapa de sesión , use SessionAware

public class MyAction implements SessionAware { private Map<String,Object> session; public void setSession(Map<String,Object> session){ this.session = session; } }

Para obtener los objetos subyacentes HttpServletRequest y HttpSession , use ServletRequestAware :

public class MyAction implements ServletRequestAware { private javax.servlet.http.HttpServletRequest request; public void setServletRequest(javax.servlet.http.HttpServletRequest request){ this.request = request; } public HttpSession getSession(){ return request.getSession(); } }

Dicho esto, el flujo de datos estándar entre páginas JSP y Acciones, o Acciones y Acciones, se obtiene a través de Accessors / Mutators, más conocidos como Getters y Setters. No reinventar la rueda.