SpringMVC prend en charge la vérification des données est la norme JSR303, et elle est vérifiée en tapant @notnull, @max, etc. sur les propriétés du bean. JSR303 fournit de nombreuses interfaces d'annotation, et SpringMVC utilise Hibernate pour ces vérifications, nous devons donc ajouter un package de validateur pour Hibernate:
S'appuyer sur les citations
compiler 'javax.validation: validation-API: 2.0.0.Final' compile 'org.hibernate: Hibernate-Validator: 6.0.0.Final'
Le cadre a fourni une vérification comme suit:
Vérifiez les annotations fournies par JSR:
@Null L'élément annoté doit être nul
@Notnull L'élément annoté ne doit pas être nul, ne peut pas être nul, peut être ""
@AssertTrue L'élément annoté doit être vrai
@Assertfalse L'élément annoté doit être faux
@Min (valeur) L'élément annoté doit être un nombre et sa valeur doit être supérieure ou égale à la valeur minimale spécifiée.
@Max (valeur) L'élément annoté doit être un nombre et sa valeur doit être inférieure ou égale à la valeur maximale spécifiée.
@Decimalmin (valeur) L'élément annoté doit être un nombre, et sa valeur doit être supérieure ou égale à la valeur minimale spécifiée
@Decimalmax (valeur) L'élément annoté doit être un nombre, et sa valeur doit être inférieure ou égale à la valeur maximale spécifiée
@Size (max =, min =) Vérifiez si la longueur de l'objet (tableau, collection, carte, chaîne) est dans la plage donnée
@Digits (entier, fraction) L'élément annoté doit être un nombre et sa valeur doit être dans une plage acceptable.
@Past L'élément annoté doit être une date passée
@Future L'élément annoté doit être une date future
@Pattern (regex =, drap =) L'élément annoté doit se conformer à l'expression régulière spécifiée
Vérifiez les annotations fournies par Hibernate Validator:
@Notblank (message =) ne peut être utilisé que sur la chaîne, pas nul, et après l'appel Trim (), la longueur doit être supérieure à 0
@Email L'élément annoté doit être une adresse e-mail
@Length (min =, max =) La taille de la chaîne annotée doit être dans la plage spécifiée.
@Notempty La chaîne commentée doit être non vide, ne peut pas être nul, "", peut être ""
@Range (min =, max =, message =) L'élément annoté doit être dans la plage appropriée
Exemple de démonstration
Créez une classe d'entité qui doit être vérifiée:
package com.yiba.wifi.news.bean.model; import org.hibernate.validator.constraints.length; import javax.validation.constraints. *; public class utilisateur {@notblank (message = "le nom de l'utilisateur ne peut pas être nul, la longueur doit être supérieure à 0") nom de chaîne; // Nom d'utilisateur @min (valeur = 1, message = "L'âge minimum est âgé de 1 an") @max (valeur = 120, message = "L'âge maximum est de 120") l'âge entier; // age @email (message = "Erreur de format de messagerie électronique") @notblank (message = "Erreur de format par courriel") Email de chaîne; // e-mail @Length (min = 6, max = 12, message = "La longueur du mot de passe doit être entre 6 et 12 chiffres") String pwd; // mot de passe // get, set .........}Notez que lors de la vérification de l'e-mail, lorsque l'e-mail est "", ou null, il passera la vérification @email, donc la vérification par e-mail nécessite @email et @notblank pour travailler ensemble.
Conception de l'interface du contrôleur, ajouter @validated Mot de mot où le paramètre est accepté
/ ** * Interface de connexion * @return * / @postMapping ("Login") public String Login (@Validated @Requestbody User utilisateur) {return "ok"; }Tests d'accès:
Lorsque l'accès aux données est dans le format suivant
{"Name": "", "Age": 0, "Email": "", "Pwd": ""}La réponse est:
{"Timestamp": 1524640724522, "Status": 400, "Error": "Bad Request", "Exception": "org.springframework.web.bind.methodargumentNotValidexception", "errers": [{"codes": ["notblank.user.amail", "Notblank.email", "NotBlank.java.lang.String", "NotBlank" ], "arguments": [ { "codes": [ "user.email", "email" ], "arguments": null, "defaultMessage": "email", "code": "email" } ], "defaultMessage": "email format error", "objectName": "user", "field": "email", "RejectEdValue": "", "lisingfailure": false, "code": "notblank"}, {"codes": ["notblank.user.name", "notblank.name", "notblank.java.lang.string", "notblank"], "arguments": [{"codes": ["" User.name ",", "],," {"codes": ["" User.name ",", "],", "," codes ": [" "User.name", ","], ",", "CODES": ["" User.name "," Nom], "," {"codes": ["" User.name "," Nom],, "{{codes": ["" User. null, "defaultMessage": "name", "code": "name"}], "defaultMessage": "le nom d'utilisateur ne peut pas être nul, la longueur doit être supérieure à 0", "objetSname": "utilisateur", "champ": "name", "rejettedValue" "Longueur.user.pwd", "longueur.pwd", "longueur.java.lang.string", "longueur"], "arguments": [{"codes": ["user.pwd", "pwd"], "arguments": null, "defaultMessage": "pwd" 6 et 12 bits "," objectname ":" utilisateur "," champ ":" pwd "," rejettedValue ":" "," bindingfailure ": false," code ":" longueur "}, {" codes ": [" min.user.age "," min.age "," min.java.lang.integer "," min "]" "user.age", "âge"], "arguments": null, "defaultMessage": "Age", "code": "Age"}, 1], "DefaultMessage": "l'âge minimum est âgé de 1 an", "ObjectName": "User", "Field": "Age", "RejectEdValue": 0, "bindingfailure": fall " pour object = 'utilisateur'.Vous pouvez voir que la demande locale n'a pas vérifié les 4 champs. Y a-t-il donc un moyen pour moi d'obtenir des informations d'exception? La réponse est oui et nous devons modifier l'interface du contrôleur.
/ ** * Interface de connexion * * @return * / @postMapping ("Login") public String Login (@Validated @RequestBody User, BindingResult BindingResult) {if (bindingResult.haserror ()) {// il y a un contrôle qui échoue <obJecterror> ErrorList = BindingResult.GetAllerRors ();); pour (Objectorror Error: ErrorList) {System.out.println (error.getDefaultMessage ()); // Sortie du message d'erreur spécifique} return "Paramètre Exception"; } return "ok"; }Demande à nouveau, le format de demande est le suivant
{"Name": "", "Age": 0, "Email": "", "Pwd": ""}La réponse est la suivante
Exception du paramètre
Les informations imprimées sur la console sont les suivantes:
Le nom d'utilisateur ne peut pas être nul, la longueur doit être supérieure à 0
La longueur du mot de passe doit être entre 6 et 12 chiffres, l'âge minimum est une erreur de format de messagerie de 1 an
Vous pouvez voir que nous avons obtenu les informations de vérification normalement.
Faisons un accès correct de référence:
Les paramètres de demande sont les suivants:
{"Name": "Zhaoyanjun", "Age": 1, "Email": "[email protected]", "PWD": "123456"}La réponse est la suivante:
D'ACCORD
La console ne produit rien.
Résumer
Ce qui précède est un exemple de démonstration de la fonction de vérification des paramètres de demande de printemps introduit par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!