Ich habe ein Spring MVC REST-Dienst Bean Validation 1.2 mit dem folgenden Verfahren erstellt:Frühling Bean Validation @Valid Handhabung
@RequestMapping(value = "/valid")
public String validatedMethod(@Valid ValidObject object) {
}
Wenn das Objekt nicht gültig ist, Tomcat mich darüber informiert, dass The request sent by the client was syntactically incorrect.
und meine validatedMethod
ist nie namens. Wie kann ich die Nachricht erhalten, die in der ValidObject
Bean definiert wurde? Sollte ich einen Filter oder Interceptor verwenden?
Ich weiß, dass ich wie unten neu schreiben kann, den Satz von ConstraintViolation
s aus dem injizierten Validator
zu bekommen, aber die oben scheint ordentlich ...
@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();
}
}
Prost, funktioniert wie ein Charme :) Wäre aber nett, nicht für jede validierte Methode zu tun. – Dormouse
@Dormouse überprüfen Sie meine Antwort :) – dharam