Spring Boot Validation menyokong JSR-380 (aka. Bean Validation 2.0, sebahagian daripada Jakarta EE dan JavaSE) anotasi Mesej ralat pengesahan boleh ditetapkan melalui atribut mesej anotasi pengesahan dan setiap anotasi pengesahan mempunyai mesej lalai. konfigurasi. , sebagai contoh, nilai atribut mesej @NotBlank
ditetapkan seperti yang ditunjukkan di bawah:
Bentuk lalai message = "{...}"
menentukan nama atribut antarabangsa, yang akan digantikan mengikut tempat Nilai yang sepadan, dan takrifan atribut pengantarabangsaan ini boleh didapati dalam hibernate-validator
dan satu siri definisi atribut pengantarabangsaan: org.hibernate.validator.ValidationMessages.properties
Dan dalam proses penggunaan sebenar kami, selain daripada menetapkan bentuk
untuk membaca atribut pengantarabangsaan, anda juga boleh terus menetapkan nilai mesej="maklumat gesaan khusus". Jika mesej tidak ditetapkan secara eksplisit, konfigurasi lalai masuk message="{propName}"
yang dinyatakan sebelum ini akan digunakan. org.hibernate.validator.ValidationMessages.properties
Spring Boot Validation pada mulanya tidak menyokong membaca konfigurasi antarabangsa Spring Boot sendiri (dikonfigurasikan melalui spring.messages), tetapi perlu berada dalam sumber/ValidationMessages Hanya sifat pengantarabangsaan dikonfigurasikan dalam sifat akan berkuat kuasa, dan gabungan Pengesahan dan konfigurasi pengantarabangsaan Spring Boot sendiri hanya akan disokong dalam Spring Boot 2.6+.
Seterusnya, digabungkan dengan versi Spring Boot 2.5 dan 2.6, kami akan memperkenalkan bagaimana Spring Boot Validation menyepadukan maklumat segera pengesahan antarabangsa tersuai.
Spring Boot 2.5.x
Dalam Spring Boot 2.5.x versi, Spring Boot Validation hanya menyokong membaca atribut pengantarabangsaan dalam
siri fail secara lalai dan bahasa Cina perlu Hanya transkod ASCII boleh memaparkan dengan betul resources/ValidationMessages.properties
seperti yang ditunjukkan di bawah:
Walaupun aplikasi Spring Boot turut mengisytiharkan konfigurasi pengantarabangsaannya sendiri, rangka kerja Spring Boot Validation It tidak boleh dibaca
Contohnya:
Konfigurasi pengantarabangsaan aplikasi Spring Boot itu sendiri adalah seperti yang ditunjukkan di bawah, tetapi dalam tetapan sifat mesej anotasi pengesahan i18n/messages.properties,
ialah boleh dibaca Tidak tersedia: "{propName}"
Jika anda mahu rangka kerja Pengesahan Spring Boot dan Spring Boot sendiri menggunakan konfigurasi pengantarabangsaan yang sama, anda boleh mengkonfigurasinya dengan cara berikut:
rreee
Nota:
- Selepas konfigurasi melalui kelas konfigurasi di atas,
- hanya serasi dengan spring Boot Spring .messages Fail pengantarabangsaan yang ditetapkan dan fail pengantarabangsaan pengesah hibernate asal
- tidak lagi menyokong siri resource/ValidationMessages.properties
Spring Boot 2.6 .x
Saya melihat melalui arahan Keluaran rangka kerja Spring Boot pada Github dan mendapati ia menyebut dalam v2.6.0-M2 dikeluarkan pada 2021-08-20 bahawa ia menyokong menggunakan MessageSource antarabangsanya sendiri untuk menghuraikan maklumat segera pengesahan, iaitu Dikatakan bahawa Spring Boot 2.6.x dan kemudiannya menyokong atribut mesej anotasi pengesahan untuk merujuk konfigurasi antarabangsa Spring Boot sendiri.
Ujian sebenar Spring Boot 2.6.x versi, sahkan anotasi
: message="{propName}"
- boleh dibaca terus melalui
Atribut dalam konfigurasi pengantarabangsaan yang ditetapkan (Bahasa Cina tidak memerlukan transkod ASCII selepas menetapkan pengekodan UTF-8), spring.messages
- turut menyokong pembacaan konfigurasi dalam
/resources
(Bahasa Cina memerlukan ASCII transcoding), ValidationMessages.properties
- dan masih menyokong
fail antarabangsa yang asal. hibernate-validator
Dan keutamaan baca adalah dari atas ke bawah iaitu yang atas berkuat kuasa dahulu.
Konfigurasi dan penggunaan khusus ditunjukkan dalam rajah di bawah:
Spring Boot 2.6 Mengenai penyepaduan Spring Boot Validation dan MessageSource, butiran pelaksanaan khusus boleh didapati dalam Release GitHub Pull Request #17530 yang disebutkan:
Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi SpringBoot Validation pengantarabangsaan maklumat segera. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!