Bean Validation
Un exemple basé sur la communication REST à l'aide de Spring Framework est décrit.
Vérifiez la valeur de RequestBody envoyée par le client. Il existe plusieurs types de contenu de chèque.
etc...
Un échantillon qui effectue juste une validation sur le contrôleur.
SampleContorller.java
@RestController
@RequestMapping("validation")
public class SampleController {
//Validez simplement
@PostMapping
public SampleResource validation(
@RequestBody @Validated SampleResource resource) {
return resource;
}
}
@Getter
@Setter
public class SampleResource {
@NotNull
@Size(min = 5, max = 30)
@Pattern(regexp = "[a-zA-Z0-9]*")
private String message;
}
Annotation | La description |
---|---|
@NotNull | Interdire Null |
@Size | {min}c'est tout{max}Sois sûr que |
@Pattern | Confirmez qu'il s'agit du modèle spécifié |
Spécifiez «@ Valid» dans le champ.
SampleContorller.java
Avec le contrôleur d'échantillons ci-dessus
@Getter
@Setter
public class SampleResource {
@Valid
@NotNull
private SampleNestResource nestResource;
}
Vous validez une classe imbriquée avec @Valid. Si nestResource
n'est pas envoyé, Null sera lié au champ et la validation spécifiée dans SampleNestResource
ne sera pas exécutée, elle est donc requise par @NotNull.
@Getter
@Setter
public class SampleNestResource {
@NotNull
@Size(min = 5, max = 30)
@Pattern(regexp = "[a-zA-Z0-9]*")
private String message;
}
Lorsque «Collection» comme «List» est spécifié dans le champ, la spécification de validation de la classe sans «Collection» et la spécification de validation pour le champ sont différentes.
SampleContorller.java
Avec le contrôleur d'échantillons ci-dessus
@Getter
@Setter
public class SampleResource {
@Size(min = 2)
private List<@NotNull String> strList;
}
Vérifiez si l'élément List
du champ est égal ou supérieur à 2 avec @Size
Assurez-vous que String
in List
n'est pas nul avec @NotNull
Si aucune manipulation n'est effectuée, MethodArgumentNotValidException
se produira.
Dans RestController
, il n'y a pas d'erreur dans BindingResult, donc obtenez le contenu de l'erreur avec des erreurs.
SampleContorller.java
@RestController
@RequestMapping("validation")
public class SampleController {
//Validez simplement
@PostMapping
public SampleResource validation(
@RequestBody @Validated SampleResource resource,
Errors errors) {
if (errors.hasErrors()){
throw new RuntimeException();
}
return resource;
}
}