يدعم SPRINGMVC التحقق من البيانات هو معيار JSR303 ، ويتم التحقق منه عن طريق كتابة notnull ، max ، إلخ. على خصائص الفول. يوفر JSR303 العديد من واجهات التعليقات التوضيحية ، ويستخدم SpringMVC السبات لهذه التحقيقات ، لذلك نحتاج إلى إضافة حزمة مصادقة على السبات:
الاعتماد على الاستشهادات
ترجمة 'javax.validation: التحقق من الصحة-api: 2.0.0.final' compile 'org.hibernate: hibernate-validator: 6.0.0.final'
قدم الإطار التحقق على النحو التالي:
تحقق من التعليقات التوضيحية التي توفرها JSR:
@null يجب أن يكون العنصر المشروح فارغًا
notnull يجب ألا يكون العنصر المشروح فارغًا ، ولا يمكن أن يكون فارغًا ، ويمكن أن يكون "
ASTERTRUE يجب أن يكون العنصر المشروح صحيحًا
@ASTERTFALSE يجب أن يكون العنصر المشروح خاطئًا
min (القيمة) يجب أن يكون العنصر المشروح رقمًا ، ويجب أن تكون قيمته أكبر من أو تساوي القيمة الدنيا المحددة.
max (القيمة) يجب أن يكون العنصر المشروح رقمًا ، ويجب أن تكون قيمته أقل من أو تساوي القيمة القصوى المحددة.
decimalmin (القيمة) يجب أن يكون العنصر المشروح رقمًا ، ويجب أن تكون قيمته أكبر من أو تساوي القيمة الدنيا المحددة
decimalmax (القيمة) يجب أن يكون العنصر المشروح رقمًا ، ويجب أن تكون قيمته أقل من أو تساوي القيمة القصوى المحددة
size (max = ، min =) تحقق مما إذا كان طول الكائن (الصفيف ، المجموعة ، الخريطة ، السلسلة) ضمن النطاق المحدد
digits (عدد صحيح ، الكسر) يجب أن يكون العنصر المشروح رقمًا ويجب أن تكون قيمته ضمن نطاق مقبول.
past يجب أن يكون العنصر المشروح هو التاريخ السابق
future يجب أن يكون العنصر المشروح تاريخًا مستقبليًا
pattern (regex = ، flag =) يجب أن يمتثل العنصر المشروح للتعبير العادي المحدد
تحقق من التعليقات التوضيحية المقدمة من صحة السبات:
لا يمكن استخدام notblank (message =) إلا على السلسلة ، وليس فارغًا ، وبعد استدعاء trim () ، يجب أن يكون الطول أكبر من 0
email يجب أن يكون العنصر المشروح هو عنوان بريد إلكتروني
length (min = ، max =) يجب أن يكون حجم السلسلة المشروحة ضمن النطاق المحدد.
notempty يجب أن تكون السلسلة المعلقة غير فارغة ، ولا يمكن أن تكون فارغة ، "" ، يمكن أن تكون ""
range (min = ، max = ، message =) يجب أن يكون العنصر المشروح ضمن النطاق المناسب
مثال مظاهرة
قم بإنشاء فئة كيان يجب التحقق منها:
package com.yiba.wifi.news.bean.model ؛ استيراد org.hibernate.validator.constraints.length ؛ استيراد javax.validation.constraints. // اسم المستخدم min (value = 1 ، message = "الحد الأدنى من العمر يبلغ من العمر 1 سنة") max (value = 120 ، message = "الحد الأقصى للسن هو 120") عدد صحيح ؛ // Age eMail (message = "EmailBox Format Error") notblank (message = "EmailBox Format Error") String البريد الإلكتروني ؛ // البريد الإلكتروني @length (min = 6 ، max = 12 ، message = "يجب أن يكون طول كلمة المرور بين 6 و 12 رقمًا") سلسلة pwd ؛ // password // get ، set .........}
لاحظ أنه عند التحقق من البريد الإلكتروني ، عندما يكون البريد الإلكتروني "" ، أو فارغًا ، فإنه سيمرر التحقق من EMAIL ، لذلك يتطلب التحقق من البريد الإلكتروني eMail و NotBlank للعمل معًا.
تصميم واجهة وحدة التحكم ، إضافة كلمة رئيسية مضافة حيث يتم قبول المعلمة
/ *** واجهة تسجيل الدخول* regurn*/ postmapping ("login") تسجيل الدخول العام ( @validated requestbody مستخدم) {return "ok" ؛ }اختبارات الوصول:
عند الوصول إلى البيانات بالتنسيق التالي
{"الاسم": "" ، "العمر": 0 ، "البريد الإلكتروني": "" ، "PWD": ""}الاستجابة هي:
{"timestamp": 1524640724522 ، "الحالة": 400 ، "خطأ": "طلب سيئ" ، "استثناء": "org.springframework.web.bind.methodargumentnotvalexception" ، "الأخطاء": "notblank.java.lang.string" ، "notblank"] ، "الحجج": [{"الرموز": ["user.email" ، "البريد الإلكتروني"] ، "الوسيطات": null ، "defaultMessage": "elem eMail": "البريد الإلكتروني: "refectedvalue": "" ، "bindingfailure": false ، "code": "notblank"} ، {"codes": ["notblank.user.name" ، "notblank.name" ، NULL ، "defaultMessage": "name" ، "Code": "Name"}] ، "DefaultMessage": "اسم المستخدم لا ، يجب أن يكون الطول أكبر من 0" ، "ObjectName": "المستخدم" ، "الحقل": "الاسم" ، "الترميز": "الترميز:" "length.user.pwd" ، "length.pwd" ، "length.java.lang.string" ، "length" ، "enciles": [{"codes": ["user.pwd" ، "pwd"] يكون بين 6 و 12 بت "،" ObjectName ":" المستخدم "،" الحقل ":" pwd "،" refectedvalue ":" "،" bindingfailure ": false ،" code ":" length "، {" codes ": [ "user.age" ، "Age"] ، "Defulents": Null ، "DefaultMessage": "Age" ، "Code": "Age" ، 1] ، "DefaultMessage": "Minimiture Age ext year year" ، "فشل التحقق من صحة الكائن =" المستخدم ". عدد الأخطاء: 4" ، "المسار": "/yiba/sms/login"}يمكنك أن ترى أن الطلب المحلي قد فشل في التحقق من الحقول الأربعة. فهل هناك طريقة لي للحصول على معلومات استثناء؟ الجواب نعم ، ونحن بحاجة إلى تعديل واجهة وحدة التحكم.
/** * واجهة تسجيل الدخول * * return */postmapping ("تسجيل الدخول") تسجيل الدخول إلى سلسلة المستخدمين (validated @requestbody مستخدم ، bindingResult bindingresult) {if (bindingResult.haserRors ()) {// لـ (ObjectError error: errorlist) {system.out.println (error.getDefaultMessage ()) ؛ // إخراج رسالة خطأ محددة} إرجاع "استثناء المعلمة" ؛ } إرجاع "موافق" ؛ }الطلب مرة أخرى ، تنسيق الطلب على النحو التالي
{"الاسم": "" ، "العمر": 0 ، "البريد الإلكتروني": "" ، "PWD": ""}الاستجابة كما يلي
استثناء المعلمة
المعلومات المطبوعة على وحدة التحكم هي كما يلي:
لا يمكن أن يكون اسم المستخدم فارغًا ، ويجب أن يكون الطول أكبر من 0
يجب أن يكون طول كلمة المرور ما بين 6 و 12 رقمًا الحد الأدنى للسن هو خطأ في تنسيق البريد الإلكتروني لمدة عام واحد
يمكنك أن ترى أننا حصلنا على معلومات التحقق بشكل طبيعي.
دعونا نفعل الوصول الصحيح المرجعي:
معلمات الطلب هي كما يلي:
{"name": "Zhaoyanjun" ، "Age": 1 ، "Email": "[email protected]" ، "PWD": "123456}الاستجابة كما يلي:
نعم
وحدة التحكم لا تخرج شيئًا.
لخص
ما ورد أعلاه هو مثال دليل على وظيفة التحقق من معلمة طلب الربيع الذي أدخله المحرر. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!