Almacenamiento de objeto en sesión - struts2

Hola tengo algo como esto en struts.xml

   <action name="LoginAction" class="controller.LoginAction">
                <result name="error">/Error.jsp</result>
                <result name="success">/Wizard.jsp</result>
    </action>

Editado:

Tras la ejecución exitosa de execute en la acción, la página siguiente tiene datos a los que accede utilizando el alcance de la solicitud. ¿Cómo puedo almacenar los mismos datos en el ámbito de la sesión?

yo lei eso HttpServletRequest El objeto se pasa como un parámetro al execute() en una acción de Struts, y siempre puedo recuperar el HttpSession objeto mediante el uso de request.getSession() y adjuntarle datos.

Entonces, si estoy usando algo como esto en controller.LoginAction

public String execute(HttpServletRequest req) {
    ...
}

Tengo que cambiar struts.xml? execute no me llaman cuando HttpServletRequest se añade como parámetro.

   <action name="LoginAction" class="controller.LoginAction">
                <result name="error">/Error.jsp</result>
                <result name="success">/Wizard.jsp</result>
    </action>

¿También es usar la sesión de esta manera el mejor método? Estoy tratando de familiarizarme con el método de puntales.

preguntado el 12 de junio de 12 a las 13:06

otra forma de conservar los datos que la sesión u otra forma de almacenar datos en la sesión. Esta es la manera perfecta de almacenar datos en la sesión. -

Acabo de editar mi publicación original con otra pregunta:

Leyó incorrectamente o lo que leyó estuvo mal; Los métodos de acción S2 no toman ningún parámetro. -

Eso explica por qué el método de ejecución no se llamará con parámetros. Gracias por aclarar eso. -

Si no recuerdo mal, los métodos de acción de struts1 tomaron dichos parámetros. Supongo que te confundiste por eso...

1 Respuestas

Puedes implementar SesiónAware interfaz:

public class LoginAction extends ActionSupport implements SessionAware {
    private Map session;

    public String execute() {
        session.put("key", "value");
        // Plus any additional action code
    }

    // Plus setter (and optionally getter) for session map.
}

Forma alternativa de usar ActionContext se explica aquí.

SessionAware se prefiere sobre ActionContext. Aquí hay algunas discusiones al respecto:

contestado el 23 de mayo de 17 a las 12:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.