Kendala bawaan dalam validasi kacang
@Null elemen beranotasi harus nol
@Notnull elemen beranotasi tidak boleh nol
@Asserttrue elemen beranotasi pasti benar
@Assertfalse elemen beranotasi harus salah
@Min (nilai) Elemen beranotasi harus menjadi angka, dan nilainya harus lebih besar dari atau sama dengan nilai minimum yang ditentukan.
@Max (nilai) Elemen beranotasi harus menjadi angka, dan nilainya harus kurang dari atau sama dengan nilai maksimum yang ditentukan.
@Decimalmin (nilai) Elemen beranotasi harus menjadi angka, dan nilainya harus lebih besar dari atau sama dengan nilai minimum yang ditentukan
@Decimalmax (nilai) Elemen beranotasi harus menjadi angka, dan nilainya harus kurang dari atau sama dengan nilai maksimum yang ditentukan
@Size (maks =, min =) Ukuran elemen beranotasi harus berada dalam kisaran yang ditentukan.
@Digits (integer, fraksi) Elemen beranotasi harus nomor dan nilainya harus dalam kisaran yang dapat diterima.
@Past elemen beranotasi haruslah tanggal masa lalu
@Future elemen beranotasi harus menjadi tanggal mendatang
@Pattern (regex =, flag =) Elemen beranotasi harus memenuhi ekspresi reguler yang ditentukan
Validator hibernasi kendala terlampir
@Notblank (pesan =) Pastikan bahwa string tidak nol dan harus lebih besar dari 0
@Email Elemen beranotasi harus berupa alamat email
@Length (min =, max =) Ukuran string yang dijelaskan harus berada dalam kisaran yang ditentukan.
@Notempty string yang dikomentari harus tidak kosong
@Range (min =, max =, pesan =) elemen beranotasi harus berada dalam kisaran yang sesuai
Efek dan Keuntungan
Mari kita lihat efek terakhir terlebih dahulu:
UserEntity kelas publik {@password private string kata sandi; @Email Private String Email;}Di atas menggunakan dua anotasi khusus untuk memverifikasi kata sandi dan email. Keuntungan dari ini adalah: satu definisi digunakan di mana -mana. Saat memodifikasi aturan verifikasi, Anda hanya perlu memodifikasi anotasi. Jika Anda menyesuaikannya, gunakan tag yang disediakan oleh Hibernate:
@Pattern (regexp = "...") email string pribadi;
Jika Anda tiba -tiba perlu memodifikasi aturan verifikasi RegExp setelah menulis banyak kelas, beban kerja akan jauh lebih besar saat ini.
menyelesaikan
Pertama, perkenalkan ketergantungan validasi hibernate dan tambahkan:
<!-Validator Hibernate-> <!-Kerangka kerja verifikasi hibernasi-> <dependency> <Groupid> org.hibernate </groupid> <Artifactid> hibernate-validator </stifactid> <version> 5.2.2.final </versi> </dependensi>
Validasi Hibernate adalah implementasi referensi JSR, jadi gunakan untuk verifikasi kacang.
Menyesuaikan anotasi verifikasi dibagi menjadi tiga langkah:
Langkah pertama adalah membuat anotasi:
@Target ({Method, field, annotation_type, konstruktor, parameter})@retensi (runtime)@didokumentasikan@kendala (divalidatedby = {emailValidator.class}) public @interface email {string pesan () default "Ini bukan format email yang valid"; /** * @return ekspresi reguler untuk mencocokkan */string regexp () default "[a-za-z0-9 ._%+-]+ @[a-za-z0-9]+//. [a-za-z] {2,4}"; Kelas <?> [] Grup () default {}; Kelas <? Extends payload> [] payload () default {}; /*** mendefinisikan beberapa anotasi ukuran {@link} pada elemen yang sama. * * @see size */ @Target ({Method, field, annotation_type, constructor, parameter}) @Retention (runtime) @Documented @interface list {email [] value (); }} Buat anotasi melalui kata kunci @Interface, dan setiap metode adalah parameter anotasi. Misalnya, dalam kode di atas, Anda dapat menggunakan @Email(regexp="...",message="...") seperti ini. Anda dapat mengabaikan sisanya, cukup salin secara langsung. Perlu dicatat bahwa @Constraint(validatedBy = { EmailValidator.class }) , di sini menentukan kelas verifikasi anotasi dan mengganti nama kelas sesuai dengan situasi aktual.
Langkah kedua adalah membuat kelas verifikasi:
Public Class EmailValidator mengimplementasikan ConceplementValidator <Email, String> {private string regexp; @Override public void initialize (email ConstraintAnnotation) {this.regExp = concinctannotation.regExp (); } @Override public boolean isValId (nilai string, conceptValidatorContext konteks) {if (value == null) {return true;} if (value.matches (regexp)) {return true; } return false; }} Di sini, cukup implementasikan antarmuka ConstraintValidator<Email, String> dan buat validator. Metode inisialisasi mendapatkan nilai regexp yang beranotasi, dan metode isValid diverifikasi. Jika memenuhi ekspresi reguler, itu mengembalikan true, jika tidak ia mengembalikan salah.
Perlu dicatat bahwa ketika nilainya kosong, yaitu, ketika objek verifikasi tidak diinisialisasi, aturan verifikasi yang sesuai harus ditulis, jika tidak kesalahan akan dilaporkan. Dalam kode di atas, apa yang tertulis adalah:
if (value == null) {return true;}Artinya, ketika objek verifikasi kosong, ia mengembalikan kesuksesan.
Langkah ketiga adalah menulis pesan kesalahan default. Bahkan, langkah ini telah dilakukan pada langkah pertama, melalui default, jadi langkah ini tidak perlu dilakukan.
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.