Die Hauptforschung in diesem Artikel ist der relevante Inhalt von Spring Learning @SessionAttributes wie folgt.
Standardmäßig ist der Umfang der Attribute in ModelMap die Anforderungsstufe, dh wenn die Anforderung abgeschlossen ist, werden die Attribute in ModelMap zerstört. Wenn Sie Eigenschaften in modelMap in mehreren Anfragen weitergeben möchten, müssen Sie ihre Eigenschaften auf die Sitzung übertragen, damit die Eigenschaften von ModelMap über Anforderungen hinweg zugegriffen werden können.
Mit Spring können wir selektiv angeben, welche Eigenschaften in der ModelMap in die Sitzung übertragen werden müssen, damit diese Eigenschaften auch in der Eigenschaftsliste der Modellmap zugegriffen werden können, die dem nächsten angeforderten Attribut entspricht. Diese Funktion wird implementiert, indem die Annotation @SessionAttributes bei der Klassendefinition kennzeichnet wird.
Machen Sie spezifische Eigenschaften von Modellobjekten, die einen Sitzungsumfang haben
Paket com.baobaotao.web;… import org.springframework.ui.modelmap; import org.springframework.web.bind.annotation Modelmap in die Sitzungsattributliste, damit dieses Attribut auf öffentliche Klasse bBtforumController {… @RequestMapPing (params = "methode = lightboardTopic") zugreifen kann, Listenboardtopic (@RequestParam ("id") int topicid, User User, ModelMap Model) {BBTForumService.Getopics (Topictopics). topicId); System.out.println ("Benutzer:" + Benutzer); model.addAttribute ("Curuser", Benutzer); // ②Add eine Eigenschaft zur Modellmap -Return "Listopic";}} Wir haben ein Modellmap -Attribut bei ② hinzugefügt, dessen Attribut Curruser ist, und bei ① platzieren wir das Attribut mit dem Namen Curruser in ModelMap über die Annotation @SessionAttributes in die Sitzung. Daher können wir das Benutzerobjekt nicht nur über request.getAttribute(“currUser”) und session.getAttribute(“currUser”) auf der Seite JSP -Ansicht, die der Anforderung von Listenboardtopic () entspricht, auf diese ModelMap#get(“currUser”) auf diese Attribut auf diese Attribut über session.getAttribute(“currUser”) auf.
Hier setzen wir nur das Attribut einer Modellmap in die Sitzung ein. Tatsächlich ermöglichen @SessionAttributes mehrere Attribute angegeben. Sie können mehrere Attribute über String -Arrays wie @SessionAttributes({“attr1”,”attr2”}) angeben. Darüber hinaus können ,@SessionAttributes auch das Modellmap -Attribut über den Attributtyp angeben, @SessionAttributes(types = {User.class,Dept.class},value={“attr1”,”attr2”}) @SessionAttributes(types = User.class) @SessionAttributes(types = {User.class,Dept.class}) @SessionAttributes(types = {User.class,Dept.class},value={“attr1”,”attr2”}) .
Wir können @SessionAttributes zum Controller hinzufügen, der auf die Sitzungseigenschaft zugreifen muss, und dann @ModelAttribute zum von der Aktion geforderten Benutzerparameter hinzufügen und sicherstellen, dass die Attributnamen der beiden konsistent sind. SpringMVC injiziert automatisch die von @SessionAttributes definierten Attribute in das Modellmap -Objekt. Gehen Sie beim Festlegen der Aktionsparameterliste zu ModelMap, um ein solches Objekt zu erhalten, und fügen Sie es der Parameterliste hinzu. Solange wir setComplete() -Methode von SessionStatus nicht aufrufen, wird dieses Objekt in der Sitzung aufbewahrt, wodurch die Freigabe von Sitzungsinformationen erkannt wird.
@Controller @SessionAttributes ("CurrentUser") </span> public class Grußcontroller {@RequestMapping public void Hallo (@modelAttribute ("CurrentUser") Benutzer {// user.sayhello ()}}}Das obige ist der gesamte Inhalt dieses Artikels über die Instanzanalyse von @SessionAttributes des Frühlingslernens. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!