Proyek web pengembangan boot musim semi terkadang perlu melakukan beberapa verifikasi dasar dari parameter yang dilewati oleh lapisan pengontrol, seperti non-kosong, kisaran nilai integer, panjang string, tanggal, email, dll. Spring mendukung API validasi kacang JSR-303, yang dapat dengan mudah diperiksa.
Gunakan anotasi untuk verifikasi
Pertama -tama tentukan objek enkapsulasi formulir
class requestForm {@size (min = 1, max = 5) name string private; public string getName () {return name; } public void setName (name string) {this.name = name; }}Bidang nama terbatas pada panjang 1 hingga 5 dengan anotasi ukuran. Ukuran adalah anotasi kendala dalam paket validasi javax.
Saat menggunakan anotasi @valid, itu berarti kacang harus diverifikasi.
@ResponseBody @GetMapping (value = "bean") Public String Validate (@Valid RequestForm Request) {System.out.println (request.getName ()); Kembalikan "OK"; }Anotasi khusus
Jika anotasi bawaan tidak cukup, Anda dapat menyesuaikan anotasi.
Misalnya, pertama -tama tentukan nameconstraint anotasi, dan batasi bidang nama yang akan dipilih dari data tertentu.
@Target ({elementType.field, elementType.parameter})@retention (retentionpolicy.runtime) @constraint (divalidatedby = nameconstraintValidator.class) @Interface nameconstraint {string [] diizinkan (); Kelas <?> [] Grup () default {}; Kelas <? Extends payload> [] payload () default {}; String message ();}Di mana nilai yang diizinkan mewakili rentang nilai hukum, dan pesan adalah informasi tampilan untuk kegagalan verifikasi.
Pesan, grup, dan muatan adalah bidang yang diperlukan oleh Hibernate Validator. Jika Anda ingin tahu, silakan merujuk ke dokumentasi resmi.
Tentukan validator untuk verifikasi nyata
kelas nameconstraintValidator mengimplementasikan ConceptValidator <nameconstraint, string> {private string [] validValues; @Override public void initialize (nameconstraint ConcinctAnnotation) {validValues = ConcinctAnnotation.allowedValues (); } @Override public boolean isValId (nilai string, conceptValidatorContext konteks) {for (string s: this.validValues) {if (s.equals (value)) {return true; }} return false; }}Gunakan dalam bentuk kacang sebagai berikut
kelas requestFormWithCustomConstraint {@nameconstraint (diizinkanValues = {"bar", "foo"}, message = "Only bar, foo") nama string pribadi; public string getName () {return name; } public void setName (name string) {this.name = name; }}Verifikasi Parameter Langsung
Apa yang harus saya lakukan jika saya tidak ingin merangkum suatu objek? Parameter ini dapat diperiksa secara langsung
@Controller@divalidasi@requestMapping (value = "validator") kelas publik ParameterValIdataDeMocontroller {@ResponseBody @GetMapping (value = "Simple") Public String ValidateParameter (@Size (min = 1, max = 5) Nama string) {System.out.println (name); Kembalikan "OK"; }}Anotasi @Valided di atas pengontrol memberi tahu Spring bahwa mereka perlu memindai kelas ini untuk memeriksa anotasi kendala.
Untuk detailnya, silakan merujuk ke bab -bab yang relevan dari dokumen resmi.
https://docs.spring.io/spring-boot/docs/1.5.9.release/reference/htmlsingle/#boot-features-validation
https://docs.spring.io/spring/docs/4.3.16.release/spring-framework-reference/htmlsingle/#validation-beanvalidation
Kode di GitHub
https://github.com/kabike/spring-boot-demo
Meringkaskan
Di atas adalah penjelasan terperinci dari metode verifikasi parameter boot pegas yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan. Editor akan membalas Anda tepat waktu!