Die Webprojekte für Spring Boot Development müssen manchmal eine grundlegende Überprüfung der von der Controller-Ebene übergebenen Parameter wie nicht leerer, Bereich der Ganzzahlwerte, Länge der Zeichenfolgen, Datum, E-Mail usw. durchführen. Spring unterstützt die API von JSR-303 Bean Validation, die leicht überprüft werden kann.
Verwenden Sie Anmerkungen zur Überprüfung
Definieren Sie zuerst ein Formularkapselungsobjekt
Klasse RequestForm {@size (min = 1, max = 5) privater Zeichenfolge Name; public String getName () {return name; } public void setName (String -Name) {this.name = name; }}Das Namensfeld ist auf die Länge von 1 bis 5 mit Größenannotation begrenzt. Größe ist die Einschränkung der Annotation im Javax.Validation -Paket.
Bei der Verwendung der @Valid -Annotation bedeutet dies, dass die Bohne überprüft werden soll.
@ResponseBody @getmapping (value = "bean") public String validate (@valid requestForm) {System.out.println (request.getName ()); zurück "ok"; }Benutzerdefinierte Anmerkungen
Wenn die integrierten Anmerkungen nicht ausreichen, können Sie die Anmerkungen anpassen.
Definieren Sie beispielsweise zunächst eine Annotation -NamensConstraint und beschränken Sie das von bestimmten Daten ausgewählte Namensfeld.
@Target ({Elementtype.field, elementtype.parameter})@retention (retentionPolicy.runtime) @Constraint (validatedBy = nameneConstraintValidator.class) @Interface -NamensConstraint {string [] erlaubt Values (); Klasse <?> [] Gruppen () Standard {}; Klasse <? erweitert Payload> [] payload () Standard {}; String message ();}Wenn erlaubte Values den rechtlichen Wertebereich repräsentiert, und die Nachricht sind die Anzeigeinformationen zum Überprüfungsfehler.
Nachricht, Gruppen und Nutzlast sind Felder, die vom Hibernate Validator erforderlich sind. Wenn Sie es wissen möchten, lesen Sie bitte die offizielle Dokumentation.
Definieren Sie einen Validator für die echte Überprüfung
Klasse nameconstraintValidator implementiert ConstraintValidator <nameneconstraint, String> {private String [] validValues; @Override public void initialize (nameneconstraint ConstrainTAnnotation) {validValues = conneNotation.AllowedValues (); } @Override public boolean isValid (String -Wert, ConstraintValidatorContext -Kontext) {for (string s: this.validvalues) {if (s.equals (value)) {return true; }} return false; }}Verwenden Sie in Formbohnen wie folgt
class RequestFormWithCustOMConstraint {@nameconstraint (erlaubteValues = {"bar", "foo"}, message = "nur bar, foo") privater String -Name; public String getName () {return name; } public void setName (String -Name) {this.name = name; }}Direkte Überprüfung der Parameter
Was soll ich tun, wenn ich ein Objekt nicht zusammenfassen möchte? Dieser Parameter kann direkt überprüft werden
@Controller@validated@requestmapPing (value = "validator") public class parameterValidatOrtemoconTroller {@ResponseBody @getMapping (value = "Simple") public String validateParameter (@size (min = 1, max = 5) String Name) {System.outln (Name); zurück "ok"; }}Die @Validated Annotation über dem Controller gibt Spring an, dass sie diese Klasse scannen muss, um die Einschränkungsannotation zu überprüfen.
Weitere Informationen finden Sie in den entsprechenden Kapiteln des offiziellen Dokuments.
https://docs.spring.io/spring-boot/docs/1.5.9release/reference/htmlsingle/#boot-features-validation
https://docs.spring.io/spring/docs/4.3.16.release/spring-framework-reference/htmlsingle/#validation-beanvalidation
Code auf GitHub
https://github.com/kabike/spring-boot-demo
Zusammenfassen
Das obige ist eine detaillierte Erläuterung der vom Editor vorgelegten Spring -Boot -Parameterüberprüfungsmethode. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht. Der Herausgeber wird Ihnen rechtzeitig antworten!