La investigación principal en este artículo es el contenido relevante de Spring Learning @SessionAttributes, de la siguiente manera.
Por defecto, el alcance de los atributos en ModelMap es el nivel de solicitud, es decir, cuando se completa la solicitud, los atributos en ModelMap se destruirán. Si desea compartir propiedades en ModelMap en múltiples solicitudes, debe transferir sus propiedades a la sesión para que se pueda acceder a las propiedades de ModelMap en todas las solicitudes.
Spring nos permite especificar selectivamente a qué propiedades en el modelmap deben transferirse a la sesión para que también se pueda acceder a estas propiedades en la lista de propiedades del ModelMap correspondiente al siguiente atributo solicitado. Esta función se implementa etiquetando la anotación de @SessionAttributes en la definición de clase.
Hacer propiedades específicas de los objetos modelo tiene un alcance de la sesión
package com.baobaotao.web;… import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.SessionAttributes;@Controller @RequestMapping("/bbtForum.do") @SessionAttributes("currUser") //① Put the attribute named currUser in the ModelMap into the Session Lista de atributos para que este atributo pueda acceder a la clase pública BBTForumController {... @RequestMapping (params = "método = listboardTopic") public string listboardTopic (@requestparam ("id") int topicid, usuario de usuario, modelmap model) {bbtforumservice.getboardTopics (topicid); system.out.println ("topic:" "" + "" + "" TopicId); System.out.println ("Usuario:" + usuario); Model.addattribute ("Curruser", User); // ②Add una propiedad para modelmap devuelve "listtopic";}} Agregamos un atributo ModelMap en ②, cuyo atributo es Curruser, y en ①, colocamos el atributo llamado Curruser en ModelMap en la sesión a través de la anotación @SessionAttributes . Por lo tanto, no solo podemos obtener el objeto de usuario a través de request.getAttribute(“currUser”) y session.getAttribute(“currUser”) en la página de vista jsp correspondiente a la solicitud listboardtopic (), sino que también accede a este atributo a través de session.getAttribute(“currUser”) o ModelMap#get(“currUser”) en la página de vista JSP correspondiente a la próxima solicitud.
Aquí solo ponemos el atributo de un ModelMap en la sesión. De hecho, @SessionAttributes permite especificar múltiples atributos. Puede especificar múltiples atributos a través de matrices de cadenas, como @SessionAttributes({“attr1”,”attr2”}) . Además ,@SessionAttributes también puede especificar el atributo ModelMap que se sesice a través del tipo de atributo, como @SessionAttributes(types = User.class) y, por supuesto, también se pueden especificar múltiples clases, como @SessionAttributes(types = {User.class,Dept.class}) , y también se pueden usar el nombre de atributo y los tipos de atributo de atributo (tipos de especificaciones con conjuntos con conjunta con conjuntos con conjuntos con conjuntos de tipos de atributo (tipos de Atributo con conjuntos con @SessionAttributes(types = {User.class,Dept.class},value={“attr1”,”attr2”}) .
Podemos agregar @SessionAttributes al controlador que necesita acceder a la propiedad de la sesión, y luego agregar @ModelAttribute al parámetro del usuario requerido por la acción y asegurar que los nombres de atributos de los dos sean consistentes. SpringMVC inyectará automáticamente los atributos definidos por @SessionAttributes en el objeto ModelMap. Al establecer la lista de parámetros de acción, vaya a ModelMap para obtener dicho objeto y agréguelo a la lista de parámetros. Mientras no llamemos setComplete() de SessionStatus, este objeto se mantendrá en la sesión, realizando así el intercambio de información de la sesión.
@Controller @SessionAttributes ("CurrentUser") </span> Public Class GreetingController {@RequestMapping public void Hello (@modelattribute ("CurrentUser") Usuario de usuario) {// user.sayhello ()}}}}}}}Lo anterior es todo el contenido de este artículo sobre el análisis de instancia de @SessionAttributes del aprendizaje de primavera. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!