@PathVariable de Validation au Printemps 4
Comment puis-je valider mes variable de chemin d'accès dans le printemps. Je veux valider champ id, puisque son seul domaine que je ne veux pas passer à un Pojo
@RestController
public class MyController {
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public ResponseEntity method_name(@PathVariable String id) {
///Some code
}
}
J'ai essayé de faire l'ajout de la validation de la variable de chemin d'accès, mais sa ne fonctionne toujours pas
@RestController
@Validated
public class MyController {
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public ResponseEntity method_name(
@Valid
@Nonnull
@Size(max = 2, min = 1, message = "name should have between 1 and 10 characters")
@PathVariable String id) {
///Some code
}
}
- Il n'y a pas de variable de chemin d'accès dans votre code, du moins pas dans votre URL, donc pas sûr de ce que doit être validé...
- Désolé je l'ai raté alors que copier & coller le code ici
- Vous pouvez essayer si simple boucle dans method_name méthode comme if(id==null || id.length()<1 || id.length()>2){ String message = "le nom doit avoir entre 1 et 10 caractères"; } et vous pouvez retourner ResponseEntity selon vos besoins, si la boucle s'avère être vrai,
- toute les réponses vous aide? Ou est-il une autre solution ou un problème?
- Merci Patrick, Votre solution a fonctionné
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour créer un bean dans votre configuration Spring:
Vous devez laisser le
@Validated
annotation sur votre contrôleur.Et vous avez besoin d'un Exceptionhandler dans votre
MyController
classe permettant de gérer laConstraintViolationException
:Après ces modifications, vous devriez voir votre message lors de la validation de frappe.
P. S.: je l'ai juste essayé avec votre
@Size
de validation.À l'archivage de ce but que j'ai appliqué cette solution de contournement pour obtenir un message de réponse équivaut à un réel
Validator
:Je pense que c'est un problème de
@RequestMapping("/")
doncAjouter
@RequestMapping("/")
vous reste de la classe puis utilisez@pathVariable