2

validation javax ne fonctionne pas sur les paramètres de la méthode .. Ceci est un code de test et aucune validation javax fonctionne sur le paramètre de méthode ...javax validation de haricots ne fonctionne pas sur les paramètres méthode

@RequestMapping(value = "/{id}", method = RequestMethod.PUT, params = "action=testAction") 
public Test update(
     @Size(min = 1) @RequestBody List<String> ids, 
     @Min(3) @PathVariable String name) { 
    return doSomething(ids, name); 
} 

Mais j'ai niveau de la classe de validation qui fonctionne parfaitement ...

@RequestMapping(method = RequestMethod.POST) 
@ResponseStatus(HttpStatus.CREATED) 
public RoleType create (@RequestBody @Validated(FieldType.class) User user) { 
    ... 
} 

Et

@Size(min = 2, max = 10, groups = { FieldType.class }, message = "Invalid user code") 
public String getId() { 
    return _id ; 
} 

- Solution -

toutes les étapes suivies selon la réponse acceptée. Et un autre ajout est annoation au niveau de la classe

@Validated 
class UserController 
{ 
    @RequestMapping(value = "/{id}", method = RequestMethod.PUT, params ="action=testAction") 
    public Test update(@Size(min = 1) @RequestBody List<String> ids,@Min(3) @PathVariable String name) { 
    return doSomething(ids, name); 
} 
} 

Répondre

2

vous devez vous inscrire MethodValidationPostProcessor haricots pour lancer l'annotation de validation de niveau de la méthode

délégués à un JSR-303 fournisseur pour exécuter la méthode niveau validation annoté méthodes

@Bean 
    public MethodValidationPostProcessor methodValidationPostProcessor() { 
      return new MethodValidationPostProcessor(); 
    } 

puis,

@RequestMapping(value = "/{id}", method = RequestMethod.PUT) 
public Test update(
     @Size(min = 1) @RequestBody List<String> ids, 
     @Min(3) @PathVariable("id") String name) { 
    return doSomething(ids, name); 
} 

si vous voulez gérer exception de validation

@ExceptionHandler(value = { ConstraintViolationException.class }) 
@ResponseStatus(value = HttpStatus.BAD_REQUEST) 
public String handleResourceNotFoundException(ConstraintViolationException e) { 
     Set<ConstraintViolation<?>> violations = e.getConstraintViolations(); 
     StringBuilder strBuilder = new StringBuilder(); 
     for (ConstraintViolation<?> violation : violations) { 
      strBuilder.append(violation.getMessage() + "\n"); 
     } 
     return strBuilder.toString(); 
} 
+2

Merci pour cette réponse élaborée, j'ai oublié d'ajouter que la configuration de haricots et une autre chose est que j'oublié pour ajouter une annotation @validated au niveau de la classe. Maintenant cela fonctionne. – surya