La principale recherche de cet article est le contenu pertinent de l'apprentissage printanier @SessionAttributes, comme suit.
Par défaut, la portée des attributs dans ModelMap est le niveau de demande, c'est-à-dire que lorsque la demande est terminée, les attributs de ModelMap seront détruits. Si vous souhaitez partager des propriétés dans ModelMap dans plusieurs demandes, vous devez transférer leurs propriétés à la session afin que les propriétés de ModelMap soient accessibles entre les demandes.
Spring nous permet de spécifier sélectivement quelles propriétés dans le modèle ModelMap doivent être transférées à la session afin que ces propriétés soient également accessibles dans la liste des propriétés du ModelMap correspondant à l'attribut demandé suivant. Cette fonction est implémentée en étiquetant l'annotation @SessionAttributes à la définition de la classe.
Faire des propriétés spécifiques des objets modèles a une portée de portée de session
Package com.baobaotao.web;… import org.springframework.ui.modelmap; import org.springframework.web.bind.annotation.sessionAttributes; @Controller @RequestMapping ("/ bbtforum.do") @SessionAnTRiButes ("CurruSer") // Liste d'attribut afin que cet attribut puisse accéder à la classe publique BBTForUmController {… @RequestMapping (params = "Method = listBoardTopic") public String ListBoardTopic (@RequestParam ("id") int suopid, utilisateur, modèle ModelMap) {bbtForumService.getBoardTopics (topicId); System.out.Println ("topicy:" + topicId); System.out.println ("utilisateur:" + utilisateur); Model.AddAttribute ("Curruseur", utilisateur); // ②add une propriété à ModelMap return "listTopic";}} Nous avons ajouté un attribut ModelMap sur ②, dont l'attribut est Curruseur, et à ①, nous plaçons l'attribut nommé Curruseur dans ModelMap dans la session via l'annotation @SessionAttributes . Par conséquent, nous pouvons non seulement obtenir l'objet utilisateur via request.getAttribute(“currUser”) et session.getAttribute(“currUser”) dans la page de vue JSP correspondant à la requête ListBoardTopic (), mais également accéder à cet attribut via session.getAttribute(“currUser”) ou ModelMap#get(“currUser”) dans la page de vue jsp correspondant à la demande suivante.
Ici, nous ne mettons que l'attribut d'un ModelMap dans la session. En fait, @SessionAttributes permet de spécifier plusieurs attributs. Vous pouvez spécifier plusieurs attributs via des tableaux de chaîne, tels que @SessionAttributes({“attr1”,”attr2”}) . En outre ,@SessionAttributes peut également spécifier l'attribut ModelMap à session via le type d'attribut, tels que @SessionAttributes(types = User.class) , et bien sûr, plusieurs classes peuvent également être spécifiées, telles que @SessionAttributes(types = {User.class,Dept.class}) , et peuvent également utiliser le nom d'attribut et l'attribut Spécification dans la conjonction avec: @SessionAttributes(types = {User.class,Dept.class},value={“attr1”,”attr2”}) .
Nous pouvons ajouter @SessionAttributes au contrôleur qui doit accéder à la propriété de session, puis ajouter @ModelAttribute au paramètre utilisateur requis par l'action, et nous assurer que les noms d'attribut des deux sont cohérents. SpringMVC injectera automatiquement les attributs définis par @SessionAttributes dans l'objet ModelMap. Lorsque vous définissez la liste des paramètres d'action, accédez à ModelMap pour obtenir un tel objet et ajoutez-le à la liste des paramètres. Tant que nous n'appelons pas setComplete() de SessionStatus, cet objet sera conservé dans la session, réalisant ainsi le partage des informations de session.
@Controller @SessionAtTributes ("CurrentUser") </span> classe publique GreetingController {@RequestMapping public void hello (@ModelAttribute ("CurrentUser") utilisateur utilisateur) {// user.sayhello ()}}Ce qui précède est tout le contenu de cet article sur l'analyse d'instance @SessionAttributes de l'apprentissage du printemps. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!