كما نعلم جميعًا ، يمكن أن تحصل فئة عمل Strut2 على جميع القيم ذات الصلة من خلال السمات ، مثل معلمات الطلب ، ومعلمات تكوين الإجراء ، وقيمة تمرير قيم السمات إلى الإجراءات الأخرى (من خلال نتائج السلسلة) ، وما إلى ذلك للحصول على قيم المعلمة هذه ، والشيء الوحيد الذي يتعين علينا القيام به هو إعلان الخاصية بنفس اسم المعلمة في فئة العمل. قبل أن يستدعي Struts2 طريقة الإجراء لفئة الإجراء (الافتراضي هي طريقة التنفيذ) ، سيتم تعيين خاصية الإجراء المقابلة.
لإكمال هذه الوظيفة ، يعتمد Struts2 على كائن Valuestack إلى حد كبير. يعمل هذا الكائن خلال دورة عمل الحياة بأكملها (سيكون لكل مثيل كائن من فئة الإجراء كائن Valuestack). عندما يتلقى STRUTS2 طلب عمل ، فإنه سيقوم أولاً بإنشاء مثيل لكائن فئة الإجراء ، ولكنه لن يستدعي طريقة الإجراء ، ولكنه ستقوم أولاً بالخصائص المقابلة لفئة الإجراء على العقدة ذات المستوى الأعلى لكائن Valuestack (كائن Valuestack يعادل المكدس). إنه مجرد أن تكون جميع قيم السمات هي قيم افتراضية ، مثل قيمة السمة لنوع السلسلة خالية ، قيمة السمة من نوع int هي 0 ، إلخ.
بعد معالجة العمل أعلاه ، سوف يستدعي Struts2 التقاطع في سلسلة التقاطع. بعد استدعاء جميع التقاطعات ، سيتم استدعاء طريقة الإجراء لفئة الإجراء. قبل استدعاء طريقة الإجراء ، سيتم تعيين قيمة السمة في العقدة ذات المستوى الأعلى لكائن Valuestack إلى السمة المقابلة في فئة الإجراء. يجب على الجميع الانتباه ، وهذا يجلب لنا الكثير من المرونة. وهذا يعني ، أثناء عملية الدعامات 2 استدعاء المعترض ، يمكن تغيير قيمة السمة في كائن Valuestack. عندما يتم تغيير قيمة سمة معينة ، ستصبح قيمة السمة المقابلة لفئة الإجراء قيمة التغيير الأخير للسمة في التقاطع.
من الوصف أعلاه ، من السهل معرفة أنه في فئة Action of Struts2 ، يمكنك الحصول على قيم المعلمات بنفس اسم السمة ، والتي يتم التعامل معها بواسطة اعتراضات مختلفة. على سبيل المثال ، يكون التقاطع الذي يحصل على معلمات الطلب هو params ، والاعتراض الذي يحصل على معلمات تكوين الإجراء هو staticparams ، وما إلى ذلك. اقرأ القيم المقابلة داخل هذه المقاطعات وتحديث قيم الخصائص المقابلة لعقدة المستوى الأعلى لكائن Valuestack. يشبه كائن Valuestack حزام النقل ، ويمرر قيمة السمة من اعتراض إلى آخر (بالطبع ، خلال هذا الوقت ، قد تتغير قيمة السمة) ، وأخيراً تم نقلها إلى كائن الإجراء ، ويتم تعيين القيمة النهائية للسمة في كائن Valuestack إلى السمة المقابلة لفئة العمل.
عندما نستخدم تعبيرات EL في طبقة العرض ، لا يمكننا فقط الوصول إلى الخصائص في الكائنات الـ 11 المخفية في تعبير EL ، ولكن أيضًا الوصول إلى قيم خاصية الكائن في Valuestack ، لأن STRUTS2 يزيد من httpservletrequest.
StrutsRequestWrapper من الطبقة العامة يمتد httpservletrequestwrapper {public StrutsRequestWrapper (httpservletrequest req) {super (req) ؛ نطاق الطلب إذا (ctx! = null) {if (attribute == null) {// إذا لم يتم العثور على قيمة السمة من نطاق الطلب ، أي ، يتم العثور على قيمة السمة للكائن من ValUestack ... valuestack stack = ctx.getvaluestack () Valuestack ...}} سمة الإرجاع ؛}}لخص
ما سبق يدور حول هذا المقال حول كيفية قيام Strut2 بتغليف معلمات الطلب ، وآمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!