English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دور الحلقة النمطية @ModelAttribute في Java

وصف المشكلة: عند استخدام قيمة الشكل المرسلة، إذا تم تعريف name،address،age. وما إلى ذلك من خصائص، فإن القيم المرسلة عبر الشكل فقط هذه الثلاث خصائص، ولكننا بحاجة إلى name،pass،address،age وما إلى ذلك من أربعة خصائص. إذن عند تقديم الشكل وتعيين القيم، قد يحدث أن القيم التي لم يتم الحصول عليها هي null. كما في الشكل التالي:

الـ pass هو null

إذن نحتاج إلى استخدام تعليمة @ModelAttribute لحل المشكلة:

النصوص التالية تنفذ الكود:

 @ModelAttribute
 public void getUsers(@RequestParam(value="name",required=false) String name,Map<String, Object> map){
  if(name!=null){
   System.out.println("دعوة ModelAttribute");
   //محاكاة حصول على عنصر من قاعدة البيانات.
   User users = new User("cjh","123","[email protected]","China");
   System.out.println("من حصول على عنصر من قاعدة البيانات"+users);
   map.put("user",users);
  }
 }
 @RequestMapping("/getInfo")
 public String getServletAPI(User user){
  String viewName = "hello";
  System.out.println("تعديل: " + user);
  return viewName;
 }

يتم تنفيذ الطريقة المزينة بـ @ModelAttribute، بغض النظر عن أي طريقة أخرى يتم استدعاؤها في هذا المسيطر.

يتم تنفيذ هذا الكود وفقًا للإ流程 التالي:

1. أولاً، يتم تنفيذ الطريقة المزينة بـ @ModelAttribute، ويتم البحث في قاعدة البيانات عن الهدف المطلوب التعديل، ويتم وضع القيم في مفتاح القيمة في map، ويجب أن يكون المفتاح متطابقًا مع اسم المعلمات التي يتم إرسالها إلى الطريقة المعالجة الطلب، مثل: إذا كان الاسم المحدد للمعلمات هو user، فإنه يجب وضع map.put(“user”,القيمة (من قاعدة البيانات)). يجب تعريف هذا Map في مكان المعلمات للطريقة (كما في الكود أعلاه).

2. يبحث Spring MVC في Map عن الهدف user ويقوم بتعيين قيم استمارة الطلب إلى الهدف هذا، ويتم استبدال فقط الخصائص المحددة في الاستمارة، والخصائص غير المحددة تكون null ولا تتغير. لذا يجب أن تكون أسماء المفاتيح المحددة في الطريقة المزينة بـ @ModelAttribute متطابقة مع أسماء المعلمات في الطريقة الهدف (@RequestMapping() المزينة). وإلا فإنها لن تكون لها أي تأثير.

3. يرسل Spring MVC هذا الهدف إلى معلمات الطريقة.

النصيحة: يجب أن تكون الأسماء المحددة للخوادم في @ModelAttribute متطابقة مع أسماء المعلمات في الطريقة الهدف.

النتيجة النهائية:

هذا هو نهاية محتويات هذا المقال، نأمل أن تكون محتويات هذا المقال قد ساعدتكم في التعلم أو العمل، ونأمل أيضًا أن تدعموا تعليمات النطق!

البيان: محتويات هذا المقال تم جمعها من الإنترنت، وتعود حقوق النشر لمالكها، يتم جمع المحتويات من إسهامات المستخدمين عبر الإنترنت وتم تحميلها بشكل تلقائي، ويستخدم هذا الموقع فقط لتقديم المحتويات دون امتلاك حقوق الملكية، ولا يتم تعديل المحتويات بشكل يدوي ولا يتحمل الموقع أي مسؤولية قانونية متعلقة بذلك. إذا كنت قد وجدت محتوى يشتبه في انتهاك حقوق النسخ، فنرجو منك إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال # ب @) لإبلاغنا، وقدم الأدلة ذات الصلة، وسنقوم بإزالة المحتويات المشبوهة فور التحقق منها.

سيذهب لكذاكرة