ข้อ จำกัด ในตัวในการตรวจสอบถั่ว
@null องค์ประกอบที่มีคำอธิบายประกอบจะต้องเป็นโมฆะ
@notnull องค์ประกอบที่มีคำอธิบายประกอบจะต้องไม่เป็นโมฆะ
@asserttrue องค์ประกอบที่มีคำอธิบายประกอบจะต้องเป็นจริง
@ASSERTFALSE องค์ประกอบที่มีคำอธิบายประกอบจะต้องเป็นเท็จ
@min (ค่า) องค์ประกอบที่มีคำอธิบายประกอบจะต้องเป็นตัวเลขและค่าของมันจะต้องมากกว่าหรือเท่ากับค่าต่ำสุดที่ระบุ
@max (ค่า) องค์ประกอบที่มีคำอธิบายประกอบจะต้องเป็นตัวเลขและค่าของมันจะต้องน้อยกว่าหรือเท่ากับค่าสูงสุดที่ระบุ
@decimalmin (ค่า) องค์ประกอบที่มีคำอธิบายประกอบจะต้องเป็นตัวเลขและค่าของมันจะต้องมากกว่าหรือเท่ากับค่าต่ำสุดที่ระบุ
@DecimalMax (ค่า) องค์ประกอบที่มีคำอธิบายประกอบจะต้องเป็นตัวเลขและค่าของมันจะต้องน้อยกว่าหรือเท่ากับค่าสูงสุดที่ระบุ
@Size (max =, min =) ขนาดขององค์ประกอบที่มีคำอธิบายประกอบต้องอยู่ในช่วงที่ระบุ
@Digits (จำนวนเต็ม, เศษส่วน) องค์ประกอบที่มีคำอธิบายประกอบจะต้องเป็นตัวเลขและค่าของมันจะต้องอยู่ในช่วงที่ยอมรับได้
@past องค์ประกอบที่มีคำอธิบายประกอบจะต้องเป็นวันที่ผ่านมา
@Future องค์ประกอบที่มีคำอธิบายประกอบจะต้องเป็นวันที่ในอนาคต
@pattern (regex =, flag =) องค์ประกอบที่มีคำอธิบายประกอบต้องสอดคล้องกับนิพจน์ทั่วไปที่ระบุ
ข้อ จำกัด ที่แนบมา
@NotBlank (message =) ตรวจสอบว่าสตริงไม่เป็นโมฆะและต้องมากกว่า 0
@Email องค์ประกอบที่มีคำอธิบายประกอบจะต้องเป็นที่อยู่อีเมล
@Length (min =, max =) ขนาดของสตริงหมายเหตุประกอบต้องอยู่ในช่วงที่ระบุ
@NotEmpty สตริงความคิดเห็นจะต้องไม่ว่างเปล่า
@Range (min =, max =, message =) องค์ประกอบที่มีคำอธิบายประกอบต้องอยู่ในช่วงที่เหมาะสม
ผลกระทบและข้อดี
มาดูเอฟเฟกต์สุดท้ายก่อน:
ผู้ใช้ระดับสาธารณะ {@Password รหัสผ่านสตริงส่วนตัว; @Email Private String Email;}ข้างต้นใช้คำอธิบายประกอบที่กำหนดเองสองรายการเพื่อยืนยันรหัสผ่านและอีเมล ข้อได้เปรียบของสิ่งนี้คือ: มีการใช้คำจำกัดความเดียวทุกที่ เมื่อแก้ไขกฎการตรวจสอบคุณเพียงแค่ต้องแก้ไขคำอธิบายประกอบ หากคุณปรับแต่งให้ใช้แท็กที่จัดทำโดย Hibernate:
@Pattern (regexp = "... ") อีเมลสตริงส่วนตัว;
หากคุณต้องการแก้ไขกฎการตรวจสอบ regexp หลังจากเขียนชั้นเรียนจำนวนมากปริมาณงานจะยิ่งใหญ่กว่านี้มาก
ทำให้สำเร็จ
ก่อนอื่นแนะนำการพึ่งพาการตรวจสอบความถูกต้องของไฮเบอร์เนตและเพิ่ม:
<!-Hibernate Validator-> <!-กรอบการตรวจสอบ HiberNate-> <การพึ่งพา> <GroupId> org.hibernate </groupId> <ratifactid> Hibernate-Validator </artifactid>
การตรวจสอบความถูกต้องของ Hibernate เป็นการอ้างอิงของ JSR ดังนั้นใช้สำหรับการตรวจสอบถั่ว
การปรับแต่งคำอธิบายประกอบการตรวจสอบแบ่งออกเป็นสามขั้นตอน:
ขั้นตอนแรกคือการสร้างคำอธิบายประกอบ:
@Target ({วิธีการ, ฟิลด์, คำอธิบายประกอบ _Type, constructor, พารามิเตอร์})@retention (รันไทม์)@documented@constraint (rigidatedby = {emailvalidator.class}) สาธารณะ @interface อีเมล {String Message () เริ่มต้น /** * @return นิพจน์ปกติเพื่อจับคู่ */สตริง regexp () ค่าเริ่มต้น "[a-za-z0-9 ._%+-]+ @[a-za-z0-9]+//. [a-za-z] {2,4}"; คลาส <?> [] กลุ่ม () ค่าเริ่มต้น {}; ชั้นเรียน <? ขยาย payload> [] payload () ค่าเริ่มต้น {}; /*** กำหนดคำอธิบายประกอบ {@link size} หลายรายการในองค์ประกอบเดียวกัน * * @see size */ @target ({วิธี, ฟิลด์, Annotation_type, constructor, พารามิเตอร์}) @retention (รันไทม์) @documented @interface List {อีเมล [] value (); - สร้างคำอธิบายประกอบผ่านคำหลัก @Interface และแต่ละวิธีเป็นพารามิเตอร์ของคำอธิบายประกอบ ตัวอย่างเช่นในรหัสด้านบนคุณสามารถใช้ @Email(regexp="...",message="...") เช่นนี้ คุณสามารถเพิกเฉยต่อส่วนที่เหลือเพียงคัดลอกโดยตรง ควรสังเกตว่า @Constraint(validatedBy = { EmailValidator.class }) ที่นี่ระบุคลาสการตรวจสอบของคำอธิบายประกอบและแทนที่ชื่อคลาสตามสถานการณ์จริง
ขั้นตอนที่สองคือการสร้างคลาสการตรวจสอบ:
Public Class EmailValidator ใช้ constraintValidator <อีเมล, สตริง> {สตริงส่วนตัว regexp; @Override โมฆะสาธารณะเริ่มต้น (อีเมล จำกัด ) {this.regexp = constraintAnnotation.regexp (); } @Override บูลีนสาธารณะ isValid (ค่าสตริง, บริบท constraintValidatorContext) {ถ้า (value == null) {return true;} ถ้า (value.matches (regexp)) {return true; } return false; - ที่นี่เพียงแค่ใช้ ConstraintValidator<Email, String> อินเทอร์เฟซและสร้างตัวตรวจสอบความถูกต้อง วิธีการเริ่มต้นได้รับค่า regexp ที่มีคำอธิบายประกอบและวิธีการ isvalid ได้รับการตรวจสอบ หากตรงกับนิพจน์ทั่วไปมันจะกลับมาจริงมิฉะนั้นจะส่งกลับเท็จ
ควรสังเกตว่าเมื่อค่าว่างเปล่านั่นคือเมื่อวัตถุการตรวจสอบไม่ได้เริ่มต้นกฎการตรวจสอบที่สอดคล้องกันจะต้องเขียนมิฉะนั้นจะมีการรายงานข้อผิดพลาด ในรหัสข้างต้นสิ่งที่เขียนคือ:
if (value == null) {return true;}นั่นคือเมื่อวัตถุการตรวจสอบว่างเปล่ามันจะกลับมาประสบความสำเร็จ
ขั้นตอนที่สามคือการเขียนข้อความแสดงข้อผิดพลาดเริ่มต้น ในความเป็นจริงขั้นตอนนี้ได้ทำในขั้นตอนแรกผ่านค่าเริ่มต้นดังนั้นขั้นตอนนี้ไม่จำเป็นต้องทำ
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com