في الواقع ، إنها طريقة يمكن استخدامها لتحديد التعليقات التوضيحية المخصصة من خلال constraint.
constraint (صادقها = xxxx.class)
فيما يلي مثال رمز على التعليق التوضيحي المخصص Java الذي قمت به لتنفيذ التحقق من معلمة الواجهة الأمامية والخلفية
إذا كنت مهتمًا بهذا ، يرجى قراءته بعناية وتعلمه بعناية:
Package Sonn.sonnannotation ؛ import java.lang.annotation.documented ؛ import java.lang.annotation.elementtype ؛ import java.lang.annotation.Reeping ؛ import java.lang.annotation.retionpolicy ؛ import java.lang.annotation.target javax.validation.constraintvalidator ؛ import javax.validation.constraintvalidatorContext ؛ import javax.validation.payload ؛ استيراد sonn.util.stringutill ؛/*** @classname: isValidString* description: includation encluder exploy programeter* 2016-7-25 8:22:58 PM * version 1.0 */@target ({elementType.field ، elementType.method})@entry (enthypolicy.runtime) constrain الفئة <؟> [] المجموعات () الافتراضي {} ؛ الفئة <؟ يمتد Payload> [] Payload () افتراضي {} ؛ class appalStringChecker تنفذ constraintvalidator <isValidString ، string> {Override public void تهيئة (isValidString arg0) {} override public boolean isValid (String strvalue ، constrentvalidatorcontext scontex } if (strvalue.contains ("<")) {return false ؛ } إعادة صواب ؛ }}}يحدد الكود أعلاه منطق طريقة التعليق التوضيحي من خلال constraint (صحة = isValidString.ValidStringChecker.class)-الفئة الداخلية لفئة التعليقات المسمى ValiverStringChecker.
تنفذ هذه الفئة الداخلية من واجهة CrosnaintValidator <isValidString ، String>
الوثائق الرسمية تصفها على هذا النحو:
جافاكس
crosnaintValidator الواجهة <a يمتد التعليق التوضيحي ، t>
•
------------------------------------------------------------------------------------------------------------------------------------
CrodentValidator الواجهة العامة <A يمتد التعليق التوضيحي ، T> يحدد المنطق للتحقق من صحة قيود معينة A لنوع كائن معين T.
يجب أن تمتثل التطبيقات للقيود التالية:
• يجب حل T إلى نوع غير معلمة
• أو يجب أن تكون المعلمات العامة لـ T أنواعًا غير محدودة
يمكن وضع التعليقات الداعمة للشرح على تنفيذ قيود لتمييزه على أنه يدعم قيود المعلمة المتقاطعة. تحقق من SupportValidationTarget والقيود لمزيد من المعلومات.
طريقة isValid التي تم تنفيذها هي طريقة التحقق من هذه الواجهة.
اختبار التأثير وأضف التعليقات التوضيحية إلى حقل فئة الكيان ليتم التحقق منه:
اكتب صفحة المقالة ، أضف "<" في عنوان المقالة وإرسالها:
فشل التقديم ، مع خطأ قدره 500 ، مما يشير إلى أن التعليق التوضيحي يسري:
ولكن لا تزال هناك مشاكل مع هذا. لا يمكن لموقع مدونتي طباعة رسالة الخطأ مباشرة. لا يزال يتعين عليك إنشاء صفحة خطأ.
هذا بسيط ، أضف مسار صفحة الخطأ ضمن web.xml ، ثم قم بعمل صفحة:
<page-page>
<rork-code> 500 </error-code>
<location> /error.jsp </bitace>
</error-page>
أولاً ، دعونا نقدم بعض المفاهيم الأساسية:
1. Java يحدد التعليق التوضيحي مع interface xx {}.
التعليقات التوضيحية ليست غامضة في الواقع ، إنها مجرد علامة. عندما يعمل البرنامج على العلامة ، فإنه ينفذ المنطق المقابل. التعليقات التوضيحية نفسها فئة.
2. عند تحديد التعليقات التوضيحية ، يمكن أن يمثل وصف بعض التعليقات التوضيحية معاني محددة:
reateention (attreentionpolicy.source) // يوجد التعليق التوضيحي فقط في الكود المصدر ولا يحتوي عليه في ملف الفئة bytecode.
@ReateCter (attreentionpolicy.class) // سياسة الاستبقاء الافتراضية ، سيكون التعليق التوضيحي في ملف الفئة bytecode ، ولكن لا يمكن الحصول عليه أثناء وقت التشغيل.
@ReateCter (attreentionpolicy.runtime) // سيكون التعليق التوضيحي في ملف Bytecode Class ويمكن الحصول عليه من خلال التفكير في وقت التشغيل.
(يجدر الإشارة إلى وقت التشغيل لأنه يعني أنه يمكن استرداده عن طريق الانعكاس)
target (elementType.type) // واجهة ، فئة ، التعداد ، التعليق التوضيحي
@target (elementType.field) // ثابت للحقول والتعداد
target (elementType.method) // الطريقة
@target (elementType.Parameter) // معلمات الطريقة
target (elementType.constructor) // constructor
target (elementType.local_variable) // المتغيرات المحلية
target (elementType.annotation_type) // التعليق التوضيحي
target (elementType.package) // package
هناك طريقة لإضافة taget (xx) و @الاحتفاظ (attreencepolicy.runtime) عند تحديد التعليقات التوضيحية ، ولكن لا تكتب أساليب في التعليقات التوضيحية. إنهم فقط يستخدمون آلية الانعكاس للحصول على التعليقات التوضيحية في وقت التشغيل ، ثم يكتبون المنطق المقابل بنفسك (ما يسمى محلل شرح)
ربما طريقة مماثلة للكتابة:
استيراد java.lang.annotation.documented ؛ استيراد java.lang.annotation.elementtype ؛ استيراد java.lang.annotation.inherited ؛ استيراد java.lang.annotation.rentence ؛ elementType.method}) @entry (enthypolicy.runtime) public interface التحقق من صحة {public int min () الافتراضي 1 ؛ Public Int Max () افتراضي 10 ؛ منطقية عامة isnotnull () الافتراضي true ؛}عند التشغيل لاحقًا ، استخدم التفكير للحصول على التعليقات التوضيحية ، ولن ناقش التفاصيل.
لقد وجدت هذا النوع من المقالات التقنية حول هذا قبل البحث عن مقالات تقنية على الإنترنت ، مما جعلني ارتباكًا كبيرًا في ذلك الوقت. لا أعتقد أنني أريد.
المثال أعلاه لشرح Java Custom Custom لتنفيذ التحقق من المعلمة الأمامية والخلفية هو كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.