ja stworzyliśmy usługę REST przy użyciu MVC wiosny Bean Validation 1.2 z następującym sposobem:Wiosna Bean Validation @Valid zabiegom
@RequestMapping(value = "/valid")
public String validatedMethod(@Valid ValidObject object) {
}
Jeśli obiekt nie jest ważne, Tomcat informuje mnie, że The request sent by the client was syntactically incorrect.
i nigdy nie jest mój validatedMethod
nazywa.
Jak mogę uzyskać komunikat zdefiniowany w fasoli ValidObject
? Czy powinienem użyć filtra lub przechwytywacza?
wiem, że mogę przepisać jak poniżej, aby uzyskać zestaw ConstraintViolation
sz wstrzyknięta Validator
, ale powyższe wydaje się bardziej schludny ...
@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();
}
}
Wiwaty, działa jak urok :) Byłoby jednak miło, nie trzeba tego robić dla każdej zwalidowanej metody. – Dormouse
@ Dormouse sprawdź moją odpowiedź :) – dharam