Les projets Web Spring Boot Development doivent parfois effectuer une vérification de base des paramètres transmis par la couche de contrôleur, tels que non vides, une gamme de valeurs entiers, la durée des chaînes, la date, le courrier électronique, etc. Spring prend en charge l'API de validation JSR-303 BEAU, qui peut être facilement vérifiée.
Utiliser des annotations pour la vérification
Définissez d'abord un objet d'encapsulation de formulaire
Classe RequestForm {@Size (min = 1, max = 5) Nom de chaîne privée; public String getName () {Nom de retour; } public void setName (string name) {this.name = name; }}Le champ de nom est limité à la longueur de 1 à 5 avec annotation de taille. La taille est l'annotation de contrainte dans le package javax.validation.
Lorsque vous utilisez l'annotation @valid, cela signifie que le haricot doit être vérifié.
@ResponseBody @getMapping (value = "bean") Public String validate (@valid requestForm request) {System.out.println (request.getName ()); retourner "ok"; }Annotations personnalisées
Si les annotations intégrées ne suffisent pas, vous pouvez personnaliser les annotations.
Par exemple, définissez d'abord une annotation nameconstraint et restreignez le champ de nom à sélectionner à partir de données spécifiques.
@Target ({elementType.field, elementType.Parameter}) @ rétention (retenderPolicy.runtime) @Constraint (validedBy = nameConstraintValidator.class) @Interface NameConstraint {String [] ALLODVALUES (); Classe <?> [] Groupes () default {}; Classe <? étend la charge utile> [] Payload () par défaut {}; Message de chaîne ();}Où les valeurs autorisées représentent la plage de valeur juridique, et le message est les informations d'affichage pour l'échec de la vérification.
Le message, les groupes et la charge utile sont les champs requis par le validateur Hibernate. Si vous voulez savoir, veuillez vous référer à la documentation officielle.
Définir un validateur pour une vérification réelle
Class NameConstraintValidator implémente CONSTRAINTVALIDATOR <NAMECONSTRAINT, String> {private String [] ValidValues; @Override public void initialize (nameconstraint contraintAnnotation) {validValues = CONSTRAINTAnNOTATION.ALLOWEDVALUES (); } @Override public boolean isValid (String Value, ConstraintValidatorContext Context) {for (String S: this.validValues) {if (s.equals (value)) {return true; }} return false; }}Utiliser sous forme de haricot comme suit
classe de demande de formulairewithCustomConstraint {@NameConstraint (allowingValues = {"bar", "foo"}, message = "seulement bar, foo") Nom de chaîne privée; public String getName () {Nom de retour; } public void setName (string name) {this.name = name; }}Vérification directe des paramètres
Que dois-je faire si je ne veux pas encapsuler un objet? Ce paramètre peut être vérifié directement
@ Contrôleur @ validé @ requestmapping (value = "validator") classe publique ParameTervalidatorDemOnTroller {@ResponseBody @getMapping (value = "Simple") public String validaParameter (@Size (min = 1, max = 5) String Name) {System.out.println (name); retourner "ok"; }}L'annotation @validated au-dessus du contrôleur indique à Spring qu'il doit scanner cette classe pour vérifier l'annotation des contraintes.
Pour plus de détails, veuillez vous référer aux chapitres concernés du document officiel.
https://docs.spring.io/spring-boot/docs/1.5.9.release/reference/htmlsingle/#boot-deatures-validation
https://docs.spring.io/spring/docs/4.3.16.release/spring-framework-reference/htmlsingle/#validation-beanvalidation
Code sur github
https://github.com/kabike/spring-boot-demo
Résumer
Ce qui précède est une explication détaillée de la méthode de vérification des paramètres de démarrage de Spring vous est présentée par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, laissez-moi un message. L'éditeur vous répondra à temps!