Ho creato un servizio di Spring MVC REST utilizzando Bean Validation 1.2 con il seguente metodo:Primavera Bean Validation @Valid manipolazione
@RequestMapping(value = "/valid")
public String validatedMethod(@Valid ValidObject object) {
}
Se oggetto non è valido, Tomcat mi informa che The request sent by the client was syntactically incorrect.
e la mia non è mai validatedMethod
chiamato.
Come è possibile ottenere il messaggio definito nel bean ValidObject
? Dovrei usare qualche filtro o intercettore?
So che posso riscrivere come qui di seguito, per ottenere il set di ConstraintViolation
s dal iniettato Validator
, ma quanto sopra sembra più pulito ...
@RequestMapping(value = "/valid")
public String validatedMethod(ValidObject object) {
Set<ConstraintViolation<ValidObject>> constraintViolations = validator
.validate(object);
if (constraintViolations.isEmpty()) {
return "valid";
} else {
final StringBuilder message = new StringBuilder();
constraintViolations.forEach((action) -> {
message.append(action.getPropertyPath());
message.append(": ");
message.append(action.getMessage());
});
return message.toString();
}
}
Cheers, funziona come un fascino :) Sarebbe bello, non doverlo fare per ogni metodo convalidato. – Dormouse
@Dormouse controlla la mia risposta :) – dharam