1: พื้นฐาน Hibernate-Validator
1. บทนำ:
โดยใช้คำอธิบายประกอบคำอธิบายประกอบเพื่อเพิ่มข้อ จำกัด ให้กับคุณลักษณะของคลาสหรือคลาสให้ตรวจสอบความถูกต้องตามกฎหมายของค่าแอตทริบิวต์ในระหว่างการรันไทม์
2. ฟังก์ชั่น:
การตรวจสอบพารามิเตอร์มีความสำคัญมากในการพัฒนาส่วนต่อประสาน API เนื่องจากไคลเอนต์อาจผ่านพารามิเตอร์น้อยลงหรือค่านั้นผิดกฎหมายหรือแม้แต่ค่าพารามิเตอร์จึงเป็นอันตรายดังนั้นความถูกต้องตามกฎหมายของพารามิเตอร์ที่ส่งโดยลูกค้าจะต้องได้รับการตรวจสอบ ในหมู่พวกเขาการใส่คำอธิบายประกอบกฎการตรวจสอบของค่าพารามิเตอร์ไปยังแอตทริบิวต์ผ่านคำอธิบายประกอบเป็นวิธีที่ค่อนข้างสง่างาม
3. คำอธิบายประกอบข้อ จำกัด ที่ใช้กันทั่วไป
4. รับ Hibernate-Validator เป็นครั้งแรก
ที่อยู่คลาสสาธารณะ {@notnull สตริงส่วนตัว line1; สตริงส่วนตัว line2; ซิปสตริงส่วนตัว; สถานะสตริงส่วนตัว @Length (สูงสุด = 20) @NotNull Private String Country; @Range (min = -2, max = 50, message = "ชั้นนอกระยะ") พื้นสาธารณะสาธารณะ; // getter && setter}สอง: บูรณาการการตรวจสอบของ Hibernate-Validator
ตัวอย่างนี้รวมอยู่บนพื้นฐานของ SpringMVC+FastJSON Integration (//www.vevb.com/article/139094.htm) คุณสามารถดูบทความนี้ก่อน (พร้อมซอร์สโค้ดเพื่อดาวน์โหลด) และรวม Hibernate-Validator ตามบทความนี้
ขั้นตอนการรวม:
1. แนะนำการพึ่งพา Hibernate-Validator ใน pom.xml
<Efferctency> <roupID> org.hibernate </groupId> <ratifactid> Hibernate-Validator </artifactId> <version> 5.4.1.final </ersion>
2. กำหนดค่าตัวตรวจสอบใน [xxx] -servlet.xml: hibernatevalidator
<!-<MVC: คำอธิบายประกอบที่ขับเคลื่อน> เพิ่มแอตทริบิวต์การตรวจสอบความถูกต้องของตัวตรวจสอบความถูกต้อง = "Validator"-> <MVC: การตรวจสอบความถูกต้องของคำอธิบายประกอบ = "ผู้ตรวจสอบความถูกต้อง"> <mvc: ตัวแปลงข้อความที่ลงทะเบียน defaults = "true"> <!-กำหนดค่า Fastjson <value> text/html; charset = utf-8 </value> <value> แอปพลิเคชัน/json </value> </list> </porement> <property name = "feature"> <list> <value> quotefieldNames </value> <bean id = "validator"> <property name = "ProviderClass" value = "org.hibernate.validator.hibernateValidator"/> <property name = "validationMessagesource" ref = "MessagesOrce"/> </bean> <value> classpath: org/hibernate/validator/validationMessages </value> </list> </คุณสมบัติ> <property name = "usecodeasdefaultMessage" value = "false"/> <property name = "defaultEncoding" value = "UTF-8"/> <property name = "cacheseconds"
3. กำหนดไฟล์ข้อความยืนยันคำอธิบายการตรวจสอบความถูกต้องของ properties ใน src/main/resources/conf/การตั้งค่าตำแหน่ง
validation.common.not.null = ฟิลด์นี้ไม่สามารถตรวจสอบความถูกต้องว่างเปล่า. not.range = ความยาวการตรวจสอบผิดกฎหมาย. common.format.error = รูปแบบข้อผิดพลาดการตรวจสอบความถูกต้อง param.age = อายุต่ำกว่า 18 ปี rep.error.unknown = ข้อผิดพลาดที่ไม่รู้จัก
4. สร้างคลาสเอนทิตีใหม่สำหรับการทดสอบ
ผู้ใช้
แพ็คเกจ com.mengdee.manage.validator; นำเข้า Javax.validation.constraints.min; นำเข้า Javax.validation.constraints.notnull; นำเข้า Javax.validation.constraints.null; นำเข้า Javax.validation.constraints.pattern; org.hibernate.validator.constraints.length; นำเข้า org.hibernate.validator.constraints.notblank; ผู้ใช้ระดับสาธารณะผู้ใช้ {@null (กลุ่ม = {groupa.class}) @notnull (กลุ่ม = {Groupb.class} @min @NotBlank (กลุ่ม = {Groupa.class, GroupB.class}) @pattern (regexp = "^(?! [0-9]+$) (?! GroupB.class}) รหัสผ่านสตริงส่วนตัว; @NotBlank (กลุ่ม = {Groupa.class, GroupB.class}) @pattern (regexp = "^((13 [0-9]) | (15 [^4, // d]) | (18 [0,3-9])) // d {8} $", ข้อความ = "หมายเลขโทรศัพท์มือถือไม่ถูกต้อง") @NotBlank (กลุ่ม = {GroupB.class}) @Length (min = 6, max = 12, message = "ความยาวชื่อเล่นคือ 6 ถึง 12 บิต") ชื่อเล่นสตริงส่วนตัว; @min (value = 18, message = "{validation.param.age}") อายุ int ส่วนตัว; @NotBlank (กลุ่ม = {Groupa.class}) @Email (message = "{validation.common.format.error}") อีเมลสตริงส่วนตัว; @NotBlank @Length (min = 3, max = 10, message = "{validation.common.not.range}") ชื่อผู้ใช้สตริงส่วนตัว; ผู้ใช้สาธารณะ () {} สาธารณะ Long getId () {return id; } โมฆะสาธารณะ setId (Long id) {this.id = id; } สตริงสาธารณะ getNickName () {return ชื่อเล่น; } โมฆะสาธารณะ setNickName (ชื่อเล่นสตริง) {this.nickName = ชื่อเล่น; } public int getage () {return Age; } การตั้งค่าโมฆะสาธารณะ (อายุ int) {this.age = อายุ; } สตริงสาธารณะ getEmail () {ส่งคืนอีเมล; } โมฆะสาธารณะ setEmail (อีเมลสตริง) {this.email = อีเมล; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; } สตริงสาธารณะ getUserName () {ส่งคืนชื่อผู้ใช้; } โมฆะสาธารณะ setUserName (ชื่อผู้ใช้สตริง) {this.userName = ชื่อผู้ใช้; } สตริงสาธารณะ getphone () {ส่งคืนโทรศัพท์; } โมฆะสาธารณะ setphone (โทรศัพท์สตริง) {this.phone = โทรศัพท์; -USERMODEL
แพ็คเกจ com.mengdee.manage.validator; นำเข้า Javax.validation.constraints.min; นำเข้า Javax.validation.constraints.pattern; นำเข้า org.hibernate.validator.constraints.email; นำเข้า org.hibernate.validator.constaints.length; userModel {@min (value = 1, message = "ค่า id ต้องมากกว่า 0") id ยาวส่วนตัว; @NotBlank @Length (min = 6, max = 12, message = "ความยาวชื่อเล่นคือ 6 ถึง 12 หลัก") ชื่อเล่นสตริงส่วนตัว; @min (value = 18, message = "{validation.param.age}") อายุ int ส่วนตัว; @NotBlank @Email (message = "{validation.common.format.error}") อีเมลสตริงส่วนตัว; @notblank @pattern (regexp = "^(?! [0-9]+$) (?! [a-za-z]+$) [0-9a-za-z] {6,20} $", ข้อความ = "องค์ประกอบของตัวอักษร 6-21 ตัวอักษรและตัวเลข @NotBlank @Length (min = 3, max = 10, message = "{validation.common.not.range}") ชื่อผู้ใช้สตริงส่วนตัว; @NotBlank @Pattern (regexp = "^((13 [0-9]) | (15 [^4, // d]) | (18 [0,3-9])) // d {8} $", ข้อความ = "รูปแบบหมายเลขโทรศัพท์มือถือไม่ถูกต้อง") โทรศัพท์ส่วนตัว Public UserModel () {} Public Long getId () {return id; } โมฆะสาธารณะ setId (Long id) {this.id = id; } สตริงสาธารณะ getNickName () {return ชื่อเล่น; } โมฆะสาธารณะ setNickName (ชื่อเล่นสตริง) {this.nickName = ชื่อเล่น; } public int getage () {return Age; } การตั้งค่าโมฆะสาธารณะ (อายุ int) {this.age = อายุ; } สตริงสาธารณะ getEmail () {ส่งคืนอีเมล; } โมฆะสาธารณะ setEmail (อีเมลสตริง) {this.email = อีเมล; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; } สตริงสาธารณะ getUserName () {ส่งคืนชื่อผู้ใช้; } โมฆะสาธารณะ setUserName (ชื่อผู้ใช้สตริง) {this.userName = ชื่อผู้ใช้; } สตริงสาธารณะ getphone () {ส่งคืนโทรศัพท์; } โมฆะสาธารณะ setphone (โทรศัพท์สตริง) {this.phone = โทรศัพท์; -ผู้ใช้งาน:
แพ็คเกจ com.mengdee.manage.validator; นำเข้า org.hibernate.validator.constraints.notblank; ผู้ใช้ชั้นเรียนสาธารณะ @NotBlank ที่อยู่สตริงส่วนตัว; @notblank บริษัท สตริงส่วนตัว; Public UserDetail () {} Public Long getId () {return id; } โมฆะสาธารณะ setId (Long id) {this.id = id; } สตริงสาธารณะ getAddress () {return address; } โมฆะสาธารณะ setAddress (ที่อยู่สตริง) {this.address = ที่อยู่; } สตริงสาธารณะ getCompany () {บริษัท ส่งคืน; } โมฆะสาธารณะ setCompany (บริษัท สตริง) {this.Company = บริษัท ; -การทดสอบกับ ValidController
แพ็คเกจ com.mengdee.manage.controller; นำเข้า javax.servlet.http.httpservletrequest; นำเข้า Javax.validation.valid; นำเข้า org.springframework.stereotype.controller; org.springframework.validation.fielderror; นำเข้า org.springframework.web.bind.annotation.requestmapping; นำเข้า org.springframework.web.bind.annotation.requestmethod; com.mengdee.manage.validator.usermodel;@controller@requestmapping ("/ถูกต้อง") คลาสสาธารณะ ValidController ขยาย basecontroller {// // http: // localhost: 8081/platform-springmvc-webapp/ถูกต้อง/ทดสอบ? age=18&nickname=mengdee&id=1&[email protected]&password=root123&username=123 @ResponseBody การตรวจสอบความถูกต้องของวัตถุ (คำขอ httpservletRequest, @valid usermodel ผู้ใช้, bindingResult bindingResult) {ถ้า (bindingResult.haserrors ()) {fielderror fielderror = bindingResult.getFielderror (); return super.responsejsonerror (Fielderror); } return "ตกลง"; } // วิธีการตรวจสอบวัตถุหลาย ๆ วัตถุในเวลาเดียวกันต้องมีผลผูกพันหลายผลลัพธ์ที่มีผลผูกพัน @valid จะปรากฏขึ้นซึ่งสอดคล้องกับ bindingResult ที่ประกาศในภายหลัง @RequestMapping (value = "/test2", method = requestMethod.get) สาธารณะ @ResponseBody วัตถุการตรวจสอบความถูกต้อง (httpservletrequest คำขอ, @valid usermodel ผู้ใช้, bindingResult bindingResult, @valid userDetail userDetail, bindingResult2 fielderror = bindingResult.getFielderror (); return super.responsejsonerror (Fielderror); } if (bindingResult2.haserrors ()) {fielderror fielderror = bindingResult2.getFielderror (); return super.responsejsonerror (Fielderror); } return "ตกลง"; -หมายเหตุเกี่ยวกับการใช้งาน:
1. สำหรับหลายฟิลด์ลำดับของการตรวจสอบระบบดูเหมือนจะแตกต่างจากคำสั่งของการประกาศภาคสนามราวกับว่ามันไม่จำเป็น
2. สำหรับการตรวจสอบแต่ละครั้งหากไม่มีแอตทริบิวต์ข้อความระบบจะใช้ค่าเริ่มต้นเช่น @NotBlank ที่เกี่ยวข้องจะเทียบเท่ากับ @NotBlank (message = "ไม่สามารถว่างเปล่า")
3. สำหรับประเภทการอ้างอิงเช่นสตริงคุณต้องใช้ร่วมกับ @NotNull, @NotEmpty หรือ @NotBlank หากคุณไม่ได้เขียนข้อ จำกัด ที่ว่างเปล่าหลังจากการทดสอบฟิลด์นี้จะไม่เข้าร่วมในการตรวจสอบ หากคุณใช้ @Pattern, @Length, @Email ฯลฯ เพียงอย่างเดียวมันจะไม่ได้รับการตรวจสอบ คุณต้องใช้ข้อ จำกัด ที่ว่างเปล่าเพื่อ จำกัด
@min: ใช้สำหรับประเภทข้อมูลพื้นฐานเช่น int, ยาว ฯลฯ
@NotNull: ค่าของวัตถุใด ๆ ไม่สามารถเป็นโมฆะได้
@NotEmpty: องค์ประกอบของวัตถุคอลเลกชันไม่ใช่ 0 นั่นคือคอลเลกชันไม่ว่างเปล่าและยังสามารถใช้สำหรับสตริงที่ไม่ใช่ NULL
@NotBlank: มันสามารถใช้สำหรับสตริงเท่านั้นที่ไม่ใช่ NULL และความยาวในการตัดแต่งสตริง () จะมากกว่า 0
สาม: การตรวจสอบกลุ่ม @validated
1. บทบาทของการจัดกลุ่ม (ใช้สถานการณ์):
ข้อ จำกัด การตรวจสอบคำอธิบายประกอบการตรวจสอบแต่ละครั้งมีแอตทริบิวต์กลุ่มซึ่งใช้เพื่อระบุว่ากลุ่มข้อ จำกัด ใดเป็นของ ด้วยวิธีนี้สามารถกำหนดค่าข้อ จำกัด หลายชุดในฟิลด์เดียวกัน เมื่อใช้งานคุณจะต้องระบุชุดของข้อ จำกัด ที่จะใช้ ตัวอย่างเช่นเมื่อลงทะเบียนผู้ใช้และแก้ไขข้อมูลผู้ใช้ ID จะต้องว่างเปล่าเมื่อลงทะเบียนและ ID จะต้องไม่ว่างเมื่อแก้ไขข้อมูลผู้ใช้ เมื่อใช้งานคุณจะต้องกำหนดข้อ จำกัด ทั้งสองนี้ให้กับกลุ่มต่าง ๆ ตัวอย่างเช่นเมื่อเพิ่มโดยใช้ข้อ จำกัด ของกลุ่ม A และใช้ข้อ จำกัด ของกลุ่ม B เมื่ออัปเดต
2. แพ็คเก็ตเป็นอินเทอร์เฟซที่ว่างเปล่า
Groupa และ GroupB
แพ็คเกจ com.mengdee.manage.validator; อินเตอร์เฟสสาธารณะ Groupa {} แพ็คเกจ com.mengdee.manage.validator; อินเตอร์เฟสสาธารณะ GroupB {}เมื่อใช้ @validated ({Groupa.class})
3. ลำดับกลุ่ม @groupequence
โดยค่าเริ่มต้นการตรวจสอบข้อ จำกัด ของกลุ่มต่าง ๆ นั้นไม่เป็นระเบียบและลำดับกลุ่มได้รับการตรวจสอบตามลำดับในกลุ่มก่อนและหลังคำสั่งเช่นการตรวจสอบข้อ จำกัด ของกลุ่มกลุ่มแรกจากนั้นตรวจสอบข้อ จำกัด ของกลุ่ม GroupB หากมีข้อกำหนดสำหรับลำดับการตรวจสอบของกลุ่มตัวอย่างเช่นคุณต้องตรวจสอบกลุ่ม A ก่อนจากนั้นตรวจสอบกลุ่ม B คุณสามารถใช้ @groupequence เพื่อกำหนดลำดับของแต่ละกลุ่ม
ใช้สถานการณ์:
(1) การตรวจสอบข้อ จำกัด ในกลุ่มที่สองขึ้นอยู่กับสถานะที่มั่นคงในการทำงานและสถานะที่มั่นคงนี้ได้รับการตรวจสอบโดยกลุ่มแรก
(2) การตรวจสอบของกลุ่มบางกลุ่มใช้เวลานานและอัตราการใช้งาน CPU และหน่วยความจำค่อนข้างใหญ่ ตัวเลือกที่ดีที่สุดคือการให้การตรวจสอบครั้งสุดท้าย ดังนั้นเมื่อทำการตรวจสอบกลุ่มจะต้องใช้วิธีการตรวจสอบอย่างเป็นระเบียบซึ่งยังเสนอแนวคิดของลำดับกลุ่ม
กลุ่มสามารถกำหนดเป็นลำดับของกลุ่มอื่น ๆ และจะต้องปฏิบัติตามลำดับที่ระบุในลำดับเมื่อใช้สำหรับการตรวจสอบ เมื่อใช้การตรวจสอบลำดับกลุ่มหากการตรวจสอบกลุ่มก่อนลำดับล้มเหลวกลุ่มที่ตามมาจะไม่ได้รับการตรวจสอบอีกต่อไป
กำหนดลำดับกลุ่มโดยใช้คำอธิบายประกอบกลุ่ม: GroupAb
แพ็คเกจ com.mengdee.manage.validator; นำเข้า Javax.validation.groupequence; @groupequence ({Groupa.class, GroupB.class}) อินเตอร์เฟสสาธารณะ groupab {ValidationController
แพ็คเกจ com.mengdee.manage.controller; นำเข้า Javax.servlet.http.httpservletrequest; นำเข้า org.springframework.stereotype.controller; นำเข้า org.springframework.validation.bindingresult; org.springframework.validation.annotation.validated; นำเข้า org.springframework.web.bind.annotation.requestmapping; นำเข้า org.springframework.web.bind.annotation.RequestMethod; com.mengdee.manage.validator.groupa; นำเข้า com.mengdee.manage.validator.groupab; นำเข้า com.mengdee.manage.validator.groupb; นำเข้า com.mengdee.Manage.validator.userentity ระบุไว้ในระหว่างการตรวจสอบเพื่อให้มีการตรวจสอบข้อ จำกัด ที่มีกลุ่มเท่านั้น หากไม่มีการรวมจะไม่มีการตรวจสอบ ตัวอย่างเช่นสำหรับโทรศัพท์กลุ่มที่ระบุโดย @notblank และ @pattern ไม่ได้ระบุกลุ่มแล้วมีข้อ จำกัด เพียงข้อเดียวเท่านั้นที่ถูกตรวจสอบว่างเปล่าและรูปแบบหมายเลขโทรศัพท์มือถือไม่ได้ตรวจสอบ // http: // localhost: 8081/platform-springmvc-webapp/validated/groupa? requestMethod.get) สาธารณะ @ResponseBody Object Groupa (คำขอ httpservletrequest, @Validated ({Groupa.class}) ผู้ใช้ผู้ใช้ผู้ใช้, bindingResult bindingResult) {ถ้า (bindingResult.haserrors ()) ส่งคืนสิ่งนี้ responsejsonerror (Fielderror); } return "ตกลง"; } // http: // localhost: 8081/platform-springmvc-webapp/ตรวจสอบ/groupb? โทรศัพท์ = 123 & รหัสผ่าน = root123 & id = 1 @requestmapping (value = "/GroupB", method = requestMetHod.get) สาธารณะ ผู้ใช้ bindingResult bindingResult) {ถ้า (bindingResult.haserrors ()) {fielderror fielderror = bindingResult.getFielderror (); ส่งคืนสิ่งนี้ responsejsonerror (Fielderror); } return "ตกลง"; } // groupab // http: // localhost: 8081/platform-springmvc-webapp/ตรวจสอบ/groupab? โทรศัพท์=11-1&password=root123&nickname=123&[email protected] // @validated ({groupa.class ฐานข้อมูล ตราบใดที่มีเงื่อนไขหนึ่งข้อ จำกัด จะได้รับการตรวจสอบ ใช้หลายกลุ่มในเวลาเดียวกันเพื่อทราบว่าไม่มีแอตทริบิวต์ตามลำดับระหว่างหลายกลุ่ม มันไม่ได้เป็นครั้งแรกที่จะตรวจสอบกลุ่ม A และจากนั้นตรวจสอบกลุ่ม B // เนื่องจากข้อ จำกัด ของ ID นั้นว่างเปล่าและไม่ว่างเปล่าถูกตรวจสอบแอตทริบิวต์จะแสดงความคิดเห็นก่อน @RequestMapping (value = "/groupAb", method = requestMethod.get) สาธารณะ @ResponseBody Objectab (httpservletRequest bindingResult bindingResult) {ถ้า (bindingResult.haserrors ()) {fielderror fielderror = bindingResult.getFielderror (); ส่งคืนสิ่งนี้ responsejsonerror (Fielderror); } return "ตกลง"; } // ค่าเริ่มต้น // http: // localhost: 8081/platform-springmvc-webapp/default? [email protected]&age=18 // @validated หากไม่ได้ระบุกลุ่มตรวจสอบว่าไม่มีแอตทริบิวต์กลุ่ม หากมีข้อ จำกัด หลายประการในฟิลด์ต้องไม่ระบุกลุ่ม หากกลุ่มที่ระบุถูก จำกัด บางส่วนและข้อ จำกัด บางส่วนไม่ได้ระบุข้อ จำกัด ดังนั้น @RequestMapping (value = "/ค่าเริ่มต้น", method = requestMethod.get) จะไม่ถูกตรวจสอบเมื่อใช้ @Validated @ResponseBody วัตถุเริ่มต้น {fielderror fielderror = bindingResult.getFielderror (); ส่งคืนสิ่งนี้ responsejsonerror (Fielderror); } return "ตกลง"; } // localhost: 8081/platform-springmvc-webapp/การตรวจสอบ/ลำดับ? โทรศัพท์ = 123 & รหัสผ่าน = root123 & อีเมล = 123 & nickname = 123 // สำหรับข้อ จำกัด หลายประการในคุณสมบัติและข้อ จำกัด หลายประการ requestMethod.get) public @ResponseBody ลำดับวัตถุลำดับ (คำขอ httpservletRequest, @validated ({groupab.class}) ผู้ใช้ผู้ใช้ผู้ใช้, bindingResult bindingResult) {ถ้า (bindingResult.haserrors ()) ส่งคืนสิ่งนี้ responsejsonerror (Fielderror); } return "ตกลง"; -สี่: คำอธิบายประกอบการตรวจสอบไฮเบอร์เนตแบบกำหนดเอง
เมื่อคำอธิบายประกอบที่จัดทำโดยการตรวจสอบความถูกต้องของไฮเบอร์เนตไม่สามารถปฏิบัติตามข้อกำหนดได้คุณสามารถปรับแต่งข้อ จำกัด การตรวจสอบได้
ขั้นตอนข้อ จำกัด ของคำอธิบายประกอบที่กำหนดเอง:
สร้างคำอธิบายประกอบ @phone
แพ็คเกจ com.mengdee.manage.validator; นำเข้า java.lang.annotation.target; นำเข้า javax.validation.constraint; นำเข้า Javax.validation.payload นำเข้า java.lang.lang.lang.elementtype.annotation_type java.lang.annotation.elementtype.field; นำเข้า java.lang.lang.anotation.elementtype.method; นำเข้า java.lang.lang.anotation.elementtype.parameter; นำเข้า java.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang.lang java.lang.annotation.retention; @Target ({วิธี, ฟิลด์, Annotation_type, Constructor, พารามิเตอร์})@retention (runtime)@เอกสาร@constraint (ถูกต้องโดย = {phoneconstraint.class}) String regexp () ค่าเริ่มต้น "^((13 [0-9]) | (15 [^4, // d]) | (18 [0,3-9])) // d {8} $"; คลาส <?> [] กลุ่ม () ค่าเริ่มต้น {}; ชั้นเรียน <? ขยาย payload> [] payload () ค่าเริ่มต้น {}; @Target ({วิธีการ, ฟิลด์, คำอธิบายประกอบ _Type, constructor, พารามิเตอร์}) @Retention (รันไทม์) @Documented สาธารณะ @Interface List {phone [] value (); -สร้างคลาสการตรวจสอบข้อ จำกัด ที่สอดคล้องกับคำอธิบายประกอบของหมายเลขโทรศัพท์มือถือ
แพ็คเกจ com.mengdee.manage.validator; นำเข้า Javax.validation.constraintvalidator; นำเข้า Javax.validation.constraintvalidatorContext; phoneconstraint ระดับสาธารณะ @Override โมฆะสาธารณะเริ่มต้น (โทรศัพท์ phoneannotation) {this.regexp = phoneannotation.regexp (); } @Override บูลีนสาธารณะ isValid (ค่าสตริง, บริบท constraintValidatorContext) {ถ้า (value == null) {return true; // hv000028: ข้อยกเว้นที่ไม่คาดคิดระหว่างการโทร isvalid} ถ้า (value.matches (regexp)) {return true; } return false; -ใช้คำอธิบายประกอบ @phone บนแอตทริบิวต์
แพ็คเกจ com.mengdee.manage.validator; นำเข้า org.hibernate.validator.constraints.notblank; คลาสสาธารณะ UserDetail {@notblank @phone สตริงส่วนตัว; Public UserDetail () {} สตริงสาธารณะ getphone () {return phone; } โมฆะสาธารณะ setphone (โทรศัพท์สตริง) {this.phone = โทรศัพท์; -บันทึกการทดสอบ
// http: // localhost: 8081/platform-springmvc-webapp/ถูกต้อง/test3? ที่อยู่ = 123 & company = 456 & โทรศัพท์ = 123 @requestmapping (value = "/test3", method = requestmethod.get) สาธารณะ bindingResult bindingResult) {ถ้า (bindingResult.haserrors ()) {fielderror fielderror = bindingResult.getFielderror (); return super.responsejsonerror (Fielderror); } return "ตกลง"; -ดาวน์โหลดรหัสที่สมบูรณ์: http://xiazai.vevb.com/201804/yuanma/platform-springmvc-webapp(vevb.com).rar
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com
บทความอ้างอิง: