1. مقدمة اعتراضية
تشبه وظيفة التقاطع المرشح في ملف web.xml. يمكنه اعتراض طلبات المستخدم والتحكم في الصفحة من خلال اعتراض طلبات المستخدم. تم تكوين التقاطع في Struts-Core-2.2.3.jar. تم تكوين التقاطع الأصلي في struts-default.xml ، والتي تختم طريقة الاستخدام الأساسية للاعتراض.
تشبه وظيفة اعتراض Struts2 مرشح Servlet. قبل تنفيذ الإجراء طريقة التنفيذ ، سيقوم Struts2 أولاً بتنفيذ التقاطع المشار إليه في Struts.xml. إذا كان هناك العديد من اعتراضات ، فسيتم تنفيذها بترتيب صعودا وهبوطا. بعد تنفيذ طريقة التقاطع لجميع المقاطعات ، سيتم تنفيذ طريقة التنفيذ للعمل.
يجب أن يقوم اعتراض Struts2 بتنفيذ هذه الواجهة من com.opensymphoy.xwork2.Interceptor.Interceptor. يجب تنفيذ الطرق الثلاثة التالية في المعترض المحدد:
باطل تدمير () ؛ void init () ؛ سلسلة اعتراض (استثناء العمل) يلقي الاستثناء ؛
تحتاج المقاطعات المخصصة إلى تجاوز الطرق الثلاث المذكورة أعلاه. بالإضافة إلى ذلك ، يرث Struts.xml من Struts2 من Struts2 ملف STRUTS-DEFAULT.XML الأصلي ، بحيث تكون جميع معلومات التكوين في Struts-DEFAULT.XML مملوكة تلقائيًا في <PACKPACT> المقابلة. الرمز المحدد كما يلي:
<package name = "demo" تمتد = "Struts-Default"> ... </package>
2. أضف اعتراضًا
لاستخدام اعتراض ، يجب تكوينك. يستخدم Struts2 طريقة التعيين ، لذلك إذا كنت ترغب في استخدام وظيفة معينة ، فيجب تكوينك في ملف التكوين ، ولم يكن التقاطع استثناءً. لذلك ، يجب إضافة عنصر التقاطع المقابل في الحزمة ، ويجب أن يرتبط الاعتراض بملف الفئة المقابل ، بحيث يتم تنفيذ التقاطع المقابل قبل تنفيذ الإجراء. طريقة الاستخدام المحددة هي كما يلي.
(1) أضف struts.xml من ملف التكوين وأضف اعتراضًا إلى الملف
<package name = "testlogin" namepace = "/" extends = "struts-default"> <!-interceptor-> <interceptor name = "myInterceptor"> </interceptor> </201> <action name = "demo "> name = "checkerror">/checksession.jsp </sults> <interceptor-ref name = "myInterceptor"> </interceptor-ref> <interceptor-ref name = "defaultStack"> </interceptor-ref> </sace> </package>
في الحزمة أعلاه ، تمت إضافة اعتراض يدعى MyInterceptor ، وتم تسجيل فئة Java في Interceptor ، والتي تم تسميتها MyInterceptor وتم حظرها في حزمة Com.Interceptor. بالإضافة إلى ذلك ، تمت إضافة إجراء مقابل إلى الحزمة. قبل تنفيذ الإجراء ، سيتم تنفيذ اعتراض myInterceptor أولاً.
(2) اكتب فئة التقاطع المسجلة myInterceptor. يجب أن تنفذ هذه الفئة واجهة com.opensymphoy.xwork2.Interceptor.Interceptor وتجاوز الطريقة المقابلة
حزمة com.Interceptor ؛ استيراد java.util.map ؛ استيراد com.Entity.user ؛ استيراد com.opensymphony.xwork2.ActionContext ؛ استيراد com.opensymphony.xwork2.ActionInvocation ؛ استيراد com.opensymphony.xwork2.Interceptor.Interceptor ؛ الفئة العامة myInterceptor تنفذ Interceptor {user user or or or or or or or or the {private user ؛ المستخدم العام getUser () {return user ؛ } public void setUser (user user) {this.user = user ؛ } Override public void Dorner () {// todo method method method suge.out.println ("---- dester () ----") ؛ } Override public void init () {// todo method method method system.out.println ("------ init () -------") ؛ } Override Public String Intercept (ActionInvocation Invocation) يلقي الاستثناء {// todo method method method system.out.println ("---------") ؛ خريطة <سلسلة ، كائن> جلسة = invocation.getInVocationContext (). getSession () ؛ if (session.get ("username")! = null) {system.out.println ("login بنجاح!") ؛ //session.put ("username" ، user.getUserName ()) ؛ إرجاع invocation.invoke () ؛ } آخر {system.out.println ("فشل تسجيل الدخول!") ؛ إرجاع "CheckerRor" ؛ }}}(3) بعد الخطوتين الأوليين ، تم تكوين التقاطع. الجزء الأخير هو استخدام التقاطع. أضف العلامة المقابلة إلى صفحة العرض ، وحدد الإجراء المسمى Demo الذي تم إنشاؤه أعلاه للعلامة. ثم قم بتنفيذ الصفحة لطباعة محتوى التقاطع المقابل في وحدة التحكم.
<٪@ page language = "java" contentType = "text/html ؛ charset = utf-8" pageencoding = "utf-8" ٪> <! <html> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = utf-8"> <title> insert title هنا </title> </head> <body> <body> اكتب = "إرسال" name = "ok" value = "submit"> </pong> </body> </html>
محتوى الطباعة:
تحليل نتائج الإخراج. في مرحلة تجميع البرنامج ، ستقرأ STRUTS.xml أولاً struts.xml STRUTS.XML ، وفي إجراء ملف التكوين ، ابحث عن ما إذا كان قد تمت إضافة اعتراض. إذا تمت إضافة اعتراض ، فابحث عما إذا كان يتم تعريف المعترض أو مكدس التقاطع في <اعتراضية> وفقًا لاسم التقاطع. إذا تبين أنه تم تعريف الاعتراض ، فابحث عن الفئة المسجلة المقابلة بناءً على التقاطع ، وأخيراً ابحث عن الفئة المسجلة في الحزمة وتنفيذ طريقة init () المقابلة. تشبه العملية العامة لمرحلة تشغيل البرنامج مرحلة التجميع. بعد أن يقدم المستخدم طلبًا في المقدمة ، سيبحث عن الإجراء المقابل في Struts.xml. إذا تم العثور عليه ، سيتم العثور على اعتراض. إذا لم يتم العثور عليها ، فسيتم طرح الخطأ المقابل. أخيرًا ، يتم تنفيذ طريقة اعتراض فئة التسجيل اعتراضية.
3. مكدس اعتراض
اعتراضات أيضا مفهوم المكدس. وهي تحدد المقاطعات المستخدمة إلى حالة مشتركة لتحقيق الإدارة الموحدة ، بحيث يمكن مشاركة المعترضات في الحزمة ، مما يسهل استخدام المعترضات بشكل كبير. غالبًا ما تستخدم المعترضات المتكررة في الحزمة. إذا قمت بإضافة Interceptor-Ref إلى الإجراء في كل مرة ، فسيكون ذلك مزعجًا للغاية. ثم يتم إنشاء مكدس التقاطع لحل هذه المشكلة. التكوين المحدد هو كما يلي:
<package name = "testlogin" namepace = "/" extendes = "Struts-Default"> <!-Interceptor-> <interceptor name = "myInterceptor"> </stilestortor> <!-تحديد سلسلة اعتراضية عامة. في علامة الإجراء ، يجب الرجوع فقط إلى سلسلة اعتراضية-> <interceptor-stack name = "defaultTStack1"> <interceptor-ref name = "myInterceptor"> </interceptor-ref> <interceptor-ref name = "defaultStack"> </interceptor-ref> </interceptor> type = "redirect">/error.jsp </redress> <result name = "success">/success.jsp </redress> <result name = "checkerror">/checksession.jsp </result> <interceptor-ref name = "defaultStack1">/interceptor-ref> </action> </package>
في المثال ، يتم استخدام Interceptor-Stack لتحديد مكدس اعتراض يسمى DefaultTstack1. تتم إضافة اعتراضه المراد تنفيذه إلى المكدس ، ويتم تغليف التقاطع ، ويتم استدعاء مكدس التقاطع مباشرة في الإجراء ، مع إدراك مشاركة مكدس التقاطع.
4. مكدس التقاطع الافتراضي
بالإضافة إلى ذلك ، يمكن تعريف مكدس التقاطع الافتراضي ، أي إذا لم يتم تعريف اعتراض في إجراء ما ، فسيقوم بتنفيذ اعتراض العام بشكل افتراضي. إنه ينتمي إلى نفس مستوى علامة التقاطع ويتم تعريفه باستخدام مقاطع الافتراض-REF.
<package name = "testlogin" namepace = "/" extendes = "Struts-Default"> <!-Interceptor-> <interceptor name = "myInterceptor"> </stilestortor> <!-تحديد سلسلة اعتراضية عامة. في علامة الإجراء ، يجب الرجوع فقط إلى سلسلة اعتراضية-> <interceptor-stack name = "defaultInter"> <interceptor-ref name = "myInterceptor"> </interceptor-ref> <interceptor-ref name = "defaultStack"> </interceptor-ref> </interceptor-stack> </interceptors <! -> <default-interceptor-ref name = "defaultInter"> </default-interceptor-ref> <action name = "demo"> <result name = "error" type = "redirect">/error.jsp </redrep> <result name = "success">/success.jsp </result>
يقوم مكدس Interceptor الافتراضي المحدد فقط بتنفيذ مكدس التقاطع الافتراضي المخصص إذا لم يحدد الإجراء اعتراضًا. إذا تم إعادة تعريف التقاطع في الإجراء ، فسيتجاوز مكدس اعتراض الافتراضي المخصص.
5. لا يوجد تنفيذ اعتراض
هناك موقف آخر حيث تحدد الحزمة التقاطع الافتراضي ، ولكن لا يلزم تنفيذ أي اعتراض في إجراء معين مكتوب. بعد ذلك ، يمكنك إضافة اعتراض يسمى DefaultStack إلى الإجراء المقابل. إنه اعتراض النظام الافتراضي ولن تكون هناك عمليات.
<package name = "testlogin" namepace = "/" extendes = "Struts-Default"> <!-Interceptor-> <interceptor name = "myInterceptor"> </stilestortor> <!-تحديد سلسلة اعتراضية عامة. في علامة الإجراء ، يجب الرجوع فقط إلى سلسلة اعتراضية-> <interceptor-stack name = "defaultInter"> <interceptor-ref name = "myInterceptor"> </interceptor-ref> <interceptor-ref name = "defaultStack"> </interceptor-ref> </interceptor-stack> </interceptors <! -> <default-interceptor-ref name = "defaultInter"> </default-section-ref> <action name = "demo"> <result name = "error" type = "redirect">/error.jsp </result> لم يتم تنفيذها-> <interceptor-ref name = "defaultStack"> </stilection-ref> </sociate> </cread>
6. طريقة التقاطع
6.1 الاستخدام
يعرض الاعتراض أعلاه فقط إجراء اعتراض اعتراض. في الواقع ، يحتوي المعترض على وظيفة قوية للغاية ويمكنه أيضًا اعتراض طريقة الإجراء المقابلة. الفرق بين اعتراض الإجراء هو أنه إذا كنت ترغب في اعتراض الطريقة ، فيجب عليك أن ترث مفترح MethodFilterBotion. يتم إرفاق هذه الفئة في Xwork-core.jar ، والتي تثبت مرة أخرى أن أعمال الويب هي جوهر Struts2. بالإضافة إلى ذلك ، من الضروري أيضًا إضافة السمات المقابلة إلى ملف التكوين لتحديد طريقة الاعتراض وطريقة عدم التصور. طريقة التكوين المحددة هي كما يلي:
<package name = "testlogin" namepace = "/" extendes = "Struts-Default"> <!-Interceptor-> <interceptor name = "myInterceptor"> </stilestortor> <!-تحديد سلسلة اعتراضية عامة. في علامة الإجراء ، يجب الرجوع فقط إلى سلسلة اعتراضية-> <interceptor-stack name = "defaultInter"> <interceptor-ref name = "myInterceptor"> </interceptor-ref> <interceptor-ref name = "defaultStack"> </interceptor-ref> </interceptor-s-s-s-interceptors </interceptors = "defaultstack"> </interceptor-res> </interceptor-stack> </interceptors type = "redirect">/error.jsp </redress> <result name = "success">/success.jsp </redress> <result name = "checkerRor">/checksession.js ليتم اعتراضها في recurdemethods-> <interceptor-ref name = "defaultStack"> <param name = "includeMethods"> أضف اسم الطريقة المراد اعتراضه </param> <!-طريقة الاعتراض-> <param name = "requredemethods"> إضافة اسم الطريقة لا يتطلب interception </ </cream>
الكود في الفئة التي ترث طريقة التقاطع المقابلة لفئة MethodFilterInterceptor:
حزمة com.Interceptor ؛ استيراد java.util.map ؛ استيراد com.opensymphony.xwork2.ActionContext ؛ استيراد com.opensymphony.xwork2.ActionInvocation ؛ استيراد com.opensymphony.xwork2.Interceptor.MethodFilterInterceptor ؛ يمتد الفئة العامة inter methodFilterInterceptor {Override public string dointercept (ActionInvocation invocation) استثناء {system.out.println ("-intercept ()-") ؛ // احصل على خريطة الجلسة المقابلة <string ، object> session = invocation.getInVocationContext (). getSession () ؛ MAP request = (MAP) ActionContext.getContext (). get ("request") ؛ string username = (string) request.get ("user.username") ؛ if (session.get ("username")! = null) {string result = invocation.invoke () ؛ System.out.println ("-end ()-") ؛ نتيجة العودة }}}} 6.2 العرض التوضيحي
دعونا نلقي نظرة على مثال على طريقة اعتراض وتحليل النتائج. يوضح المثال التالي نتائج إخراج طريقة التقاطع. في المثيل ، يتم إنشاء فئة تسجيل الدخول بشكل منفصل لإضافة الطريقة التي سيتم تنفيذها بواسطة الإجراء ؛ يتم تجاوز الفئة inter في طريقة التقاطع ، وتخرج ما إذا كان سيتم اعتراض طريقة معينة في وحدة التحكم ؛ تتم إضافة ملف login.jsp لإظهار تنفيذ الأساليب الثلاثة على التوالي.
(1) تعريف اعتراض الطريقة في Struts.xml يحدد اعتراضًا مسماة Inter في الحزمة ، ويحدد المعلمات في المعترض. includeMethods يستخدم لاعتراض طريقة 1. method2 في revedemethods تعني أن طريقة MOTES2 لم يتم اعتراضها. التكوين المحدد هو كما يلي:
<! doctype Struts public "-// Apache Software Foundation // DTD STRUTS configuration 2.0 // en" "http://struts.apache.org/dtds/struts-2.0.0.dtd"> <struts> <struts name = "struts.action.extension" value = "، <interceptor name = "inter"> <param name = "includeMethods"> method1 </param> <!-طريقة التقاطع 1-> <param name = "requiredeMethods"> method2 </param> </stilection> <interceptor-stack = "myInterceptor"> interceptor-ref name = "inter" name = "defaultStack"> </stilection-ref> </ اعتراضية stack> </interceptor-stack> </interceptors> <action name = "loginAction"> <result name = "success"> success.jsp </result> <result name = "error" error.jsp </sultresul type = "redirectaction"> مرحبًا </result> <interceptor-ref name = "inter"> </stilestor-ref> <interceptor-ref name = "defaultStack"> </interceptor-ref> </sociate> </package> </struts>
(2) فئة تسجيل الدخول ، وتكوين الإجراء في login.jsp ، وأضف ثلاث طرق طريقة 1-method3 إلى هذه الفئة ، على التوالي ، يتم اعتراض الطريقة 1 ، والأسلوب 2 و method3 لا يتم اعتراضهم ، وأخيرا نتحقق من نتيجة الإخراج.
حزمة com.action ؛ استيراد com.opensymphony.xwork2.actionsupport ؛ يمتد تسجيل الدخول إلى الفئة العامة Actionupport {Override public execute () يلقي الاستثناء {if (this.username.equals ("admin") && this.password.equals ("admin")) {return "success" ؛ } آخر إذا (this.username.equals ("cancel") && this.password.equals ("cancel")) {return "cancel" ؛ } آخر {return "error" ؛ }} public void method1 () {system.out.println ("طريقة التنفيذ: method1") ؛ } public void method2 () {system.out.println ("MESSUTION method: method2") ؛ } public void method3 () {system.out.println ("method method: method3") ؛ } اسم المستخدم الخاص بالسلسلة الخاصة ؛ كلمة مرور السلسلة الخاصة ؛ السلسلة العامة getUserName () {return this.username ؛ } public void setusername (string username) {this.userName = username ؛ } السلسلة العامة getPassword () {return this.password ؛ } public void setPassword (سلسلة كلمة مرور) {this.password = password ؛ }}(3) فئة inter ، وراثة فئة methodfilterinterceptor ، ويستخدم لتنفيذ طرق الاعتراض. أعد كتابة طريقة dointercept وأضف المعلومات المقابلة لاعتراض الطريقة.
حزمة com.Interceptor ؛ استيراد java.util.date ؛ استيراد java.util.map ؛ استيراد com.action.loginAction ؛ استيراد com.opensymphony.xwork2.ActionContext ؛ استيراد com.opensymphony.xwork2.ActionInvocation ؛ استيراد com.opensymphony.xwork2.Interceptor.MethodFilterInterceptor ؛ يمتد الفئة العامة Inter MethodFilterInterceptor {Override String Dointercept (ActionInvocation Invocation) استثناء {// todo method method method system.out.println ("اعتراض اعتراض قبل تنفيذ الإجراء"+تاريخ جديد ()) ؛ النتيجة سلسلة = invocation.invoke () ؛ // تنفيذ طريقة الإجراء system.out.println ("اعتراضات اعتراض بعد تنفيذ الإجراء"+تاريخ جديد ()) ؛ نتيجة العودة }}(4) login.jsp ، أضف ثلاثة أزرار على صفحة JSP ، وإظهار ثلاث طرق على التوالي ، والحكم على اعتراض المعرض للطريقة. تتم إضافة الإجراءات التي نشرتها الأزرار الثلاثة بعد النقر بشكل ديناميكي في JavaScript. هذا يحقق طريقة تنفيذ إجراءات مختلفة في شكل. بالطبع ، هناك طرق أخرى ، سيتم مناقشتها في المقالة التالية.
<٪@ page language = "java" contentType = "text/html ؛ charset = utf-8" pageencoding = "utf-8" ٪> <! <html> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = utf-8"> <title> insert title هنا </title> <script type = "text/javaScript"> // method 1 ، تحديد مثيل للطريقة المعتادة طريقة 1 () form.Action = "loginAction! method1" ؛ form.submit () ؛ }. form.action = "loginAction! method2" ؛ form.submit () ؛ } // method 3 ، أضف طريقة لا تعترض على الزر 3 method3 () {var form = document.forms [0] ؛ form.action = "loginAction! method3" ؛ form.submit () ؛ } </script> </head> <body> <port> اسم المستخدم: <type type = "text" name = "username"> <bord> كلمة المرور: <input type = "text" name = "password"> <br> <input type = "pridt" = "ok" value = "button1" onClick = "method1 ()" اكتب = "إرسال" name = "OK2" value = "button3" onClick = "method3 ()"> </pong> </body> </html> عرض الصفحة بعد اكتمال التشغيل:
(5) تحليل نتائج التشغيل ، انقر فوق الأزرار 1 و 2 و 3 على التوالي ، وإخراج النتائج في وحدة التحكم. الزر 1 هو الطريقة المرتبطة 1. هذه الطريقة اعتراض في struts.xml. إذا كانت النتيجة صحيحة ، فسيتم عرض النتيجة المعتادة. الأزرار المقابلة 2 و 3 فقط تخرج نتائج التشغيل لأنها لم يتم اعتراضها. ثم انظر إلى مخطط النتيجة أدناه:
مخطط النتيجة هو بالضبط نتيجة تحليلنا. تم اعتراض الزر 1 ، وتم تنفيذ طريقة dointercept في الفئة inter. لم يتم اعتراض الأزرار المقابلة 2 و 3 من الاثنين. بمعنى آخر ، يتم وضع Method1 في القائمة البيضاء من اعتراض الطريقة ، ويجب اعتراض الطريقة عند تنفيذها ؛ يتم وضع Method2 في القائمة السوداء للاعتراض ، وليس هناك حاجة لاعتراض الطريقة ؛ الطريقة 3 لا تفعل أي شيء.
7. الخلاصة
تم تلخيص محتوى التقاطع هنا. يوفر Interceptor وظائف قوية للغاية ، مما يسمح للمطورين بالتحكم في نتائج الإخراج في وقت التشغيل ، مما يزيد من مرونة البرمجة. بالإضافة إلى ذلك ، لا تحاول تذكر أي أشياء نظرية. يجب عليك تحليلها بعقلانية ، وممارسة المزيد ، وتقديم بعض الأمثلة على فهم أعمق لنتائج التحليل.
ملاحظة: الوصف الوظيفي للاعتراض المقدم من Struts2 (Xwork)
اعتراض | اسم | يوضح |
اعتراض الاسم المستعار | الاسم المستعار | يتم تحويل معلمات الطلب إلى ملفات أسماء مختلفة بين طلبات مختلفة ، ويظل محتوى الطلب دون تغيير |
اعتراض التسلسل | سلسلة | دع خصائص الإجراء السابق يمكن الوصول إليها من خلال الإجراء التالي ، ويتم استخدامها الآن بالاقتران مع نتيجة نوع السلسلة (<result type = "chain">). |
مربع الاختيار اعتراض | مربع الاختيار | تمت إضافة رمز معالجة مربع الاختيار التلقائي ، قم بإعداد محتوى Unceckbox إلى FALSE ، في حين أن HTML لا ترسل Uncheckbox افتراضيًا. |
ملفات تعريف الارتباط اعتراض | ملفات تعريف الارتباط | استخدم الاسم والقيمة المكونة للإشارة إلى ملفات تعريف الارتباط |
اعتراض خطأ التحويل | التحويل | يضيف خطأ من ActionContext إلى حقل خاصية الإجراء. |
إنشاء اعتراض الجلسة | يخلق | قم بإنشاء HTTPSENESS تلقائيًا لاستخدامها في خدمات التقاطع التي تتطلب httpsession. |
تصحيح التصحيح | تصحيح الأخطاء | توفير صفحات تصحيح الأخطاء المختلفة لإظهار حالة البيانات الداخلية. |
تنفيذ وانتظر اعتراض | execandwait | قم بتنفيذ الإجراء في الخلفية أثناء نقل المستخدم إلى صفحة انتظار وسيطة. |
استثناء اعتراض | استثناء | ضع الاستثناء من الشاشة |
ملف تحميل الملف | fileUpload | توفير وظيفة تحميل الملف |
I18N اعتراض | i18n | سجل المكان المحدد من قبل المستخدم |
اعتراض المسجل | المسجل | اسم الإخراج |
اعتراض متجر الرسائل | محل | تخزين أو الوصول إلى الرسائل ، والأخطاء ، وأخطاء الميدان ، وما إلى ذلك التي تظهر في فئات العمل التي تنفذ واجهة التحقق من الصحة. |
نموذج اعتراض مدفوع | يحركه النموذج | إذا قام الفصل بتنفيذ ModelDriven ، فضع النتيجة التي تم الحصول عليها بواسطة GetModel في مكدس القيمة. |
نموذج النطاق مدفوع | محرك النموذج | إذا قام أحد الإجراء بتنفيذ ScopedModelDriven ، فسيقوم المعترض بإخراج النموذج من النطاق المقابل ويطلق على طريقة setModel الخاصة بالإجراء ووضعه داخل الإجراء. |
المعلمات اعتراض | params | اضبط المعلمات في الطلب على الإجراء. |
إعداد اعتراض | تحضير | إذا قام Acton بتنشيط قابلاً للتحضير ، فإن Interceptor يستدعي طريقة إعداد فئة الإجراء. |
اعتراض النطاق | نِطَاق | طريقة سهلة لحفظ حالة الإجراء في الجلسة والتطبيق. |
servlet التكوين اعتراض | ServletConfig | يوفر طرقًا للوصول إلى httpservletrequest و httpservletresponse ، والوصول إلى شكل خريطة. |
المعلمات الثابتة اعتراض | StaticParams | قم بتعيين المحتويات في <Param> في <action> في الإجراء المقابل من ملف Struts.xml. |
أدوار اعتراض | أدوار | يحدد ما إذا كان المستخدم له دور محدد JAAS ، وإلا فلن يتم تنفيذه. |
اعتراض الموقت | مؤقت | وقت تنفيذ العمل الإخراج |
اعتراض الرمز المميز | رمز | تجنب النقر المزدوج عبر الرمز المميز |
اعتراض جلسة الرمز المميز | الرموز | مثل اعتراض الرمز المميز ، عند النقر المزدوج ، يتم تخزين البيانات المطلوبة في الجلسة |
اعتراض التحقق | تصديق | تحقق من البيانات المقدمة باستخدام المحتوى المحدد في ملف Action-Venidation.xml. |
اعتراض سير العمل | سير العمل | طريقة التحقق من صحة Call Action ، وبمجرد وجود خطأ ، سيتم نقله إلى شاشة الإدخال. |
اعتراض مرشح المعلمة | ن/أ | إزالة المعلمات غير الضرورية من قائمة المعلمات |
تصريح التنميط | التنميط | تنشيط الملف الشخصي عبر المعلمات |