البحث الرئيسي في هذه المقالة هو المحتوى ذي الصلة من SPRING Learning @SessionAttributes ، على النحو التالي.
بشكل افتراضي ، يكون نطاق السمات في ModelMap هو مستوى الطلب ، أي عند اكتمال الطلب ، سيتم تدمير السمات في ModelMap. إذا كنت ترغب في مشاركة الخصائص في ModelMap في طلبات متعددة ، فيجب عليك نقل خصائصها إلى الجلسة بحيث يمكن الوصول إلى خصائص ModelMap عبر الطلبات.
يسمح لنا Spring بشكل انتقائي بتحديد الخصائص الموجودة في الخريطة النموذجية التي يجب نقلها إلى الجلسة بحيث يمكن أيضًا الوصول إلى هذه الخصائص في قائمة خصائص الخريطة النموذجية المقابلة للسمة المطلوبة التالية. يتم تنفيذ هذه الوظيفة من خلال وضع علامة على التعليق التوضيحي @SessionAttributes في تعريف الفئة.
جعل خصائص محددة من كائنات النموذج لها نطاق جلسة نطاق
package com.baobaotao.web ؛ ... استيراد org.springframework.ui.modelmap ؛ استيراد org.springframework.web.bind.annotation.sessionattributes في قائمة سمة الجلسة بحيث يمكن لهذه السمة الوصول إلى الفئة العامة bbtforumController {... requestMapping (params = "method = listboardTopic") public string listboardtopic (requestparam ("id") TopicId) ؛ system.out.println ("user:" + user) ؛ model.addattribute ("curruser" ، user) ؛ // ②add خاصية لنموذج mapap "listtopic" ؛}} لقد أضفنا سمة طراز mapp في ② ، التي تكون سمة هي النخاع ، وفي ① ، نضع السمة المسمى المعمل في ModelMap في الجلسة من خلال التعليق التوضيحي @SessionAttributes . لذلك ، لا يمكننا فقط الحصول على كائن المستخدم من خلال request.getAttribute(“currUser”) session.getAttribute(“currUser”) ModelMap#get(“currUser”) session.getAttribute(“currUser”) .
هنا نضع فقط سمة خريطة نموذج في الجلسة. في الواقع ، يسمح @SessionAttributes بتحديد سمات متعددة. يمكنك تحديد سمات متعددة من خلال صفائف السلسلة ، مثل @SessionAttributes({“attr1”,”attr2”}) . بالإضافة إلى ذلك ,@SessionAttributes أيضًا تحديد سمة modelmap التي سيتم تسميتها من خلال نوع السمة ، مثل sessionattributes @SessionAttributes(types = {User.class,Dept.class},value={“attr1”,”attr2”}) @SessionAttributes(types = {User.class,Dept.class}) @SessionAttributes(types = User.class) @SessionAttributes(types = {User.class,Dept.class},value={“attr1”,”attr2”}) .
يمكننا إضافة @SessionAttributes إلى وحدة التحكم التي تحتاج إلى الوصول إلى خاصية الجلسة ، ثم إضافة @ModelAttribute إلى معلمة المستخدم المطلوبة من خلال الإجراء ، والتأكد من أن أسماء السمات من الاثنين متسقة. ستقوم SpringMVC تلقائيًا بضخ السمات المحددة بواسطة @SessionAttributes في كائن ModelMap. عند إعداد قائمة المعلمات الإجراء ، انتقل إلى ModelMap للحصول على مثل هذا الكائن وإضافته إلى قائمة المعلمات. طالما أننا لا نسمي طريقة setComplete() لـ SessionStatus ، سيتم الاحتفاظ بهذا الكائن في الجلسة ، وبالتالي تحقيق مشاركة معلومات الجلسة.
controllerSessionAttRibutes ("CurrentUser") </span> فئة عامة GreetingController {REquestMapping public void hello (modelattribute ("currentUser") مستخدم) {// user.sayhello ()}}}ما سبق هو كل محتوى هذه المقالة حول تحليل مثيل SessionAttributes لتعلم الربيع. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!