Я учусь эффективно использовать валидатор бобов Spring в моем проекте отдыха.public class Project {
@NotBlank(message = "%s is mandatory")
private String projectName;
@NotBlank(message = "%s is mandatory")
private String maintainerName;
@NotBlank(message = "%s is mandatory")
private String maintainerEmail;
...
}
И это мой GlobalexceptionHandler , который обрабатывает метод argumentNotvalidexception и генерирует правильный ответ HTTP на основе проверки сообщений:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
log.warn(e.getMessage());
StringBuilder sb = new StringBuilder();
AtomicReference separator = new AtomicReference("");
e.getBindingResult().getAllErrors().forEach((error) -> {
sb.append(separator.get());
sb.append(String.format(error.getDefaultMessage(), ((FieldError) error).getField()));
separator.set(", ");
});
return new ResponseEntity(sb.toString(), HttpStatus.BAD_REQUEST);
}
}
< /code>
Код выше работает должным образом, и он генерирует ожидаемый ответ: < /p>
HTTP/1.1 400
Content-Type: text/plain;charset=UTF-8
Content-Length: 57
Date: Mon, 16 Jun 2025 19:07:22 GMT
Connection: close
maintainerEmail is mandatory, maintainerName is mandatory
Но, давайте предположим, у меня есть десять pojos с 50 полями, которые я хотел бы проверить с той же @notblank (message = "%s обязательно") аннотация. Чтобы записать в 50 раз одинаково
message = "%s is mandatory" Line выглядит для меня как уродливая. />public class Project {
@NotBlank
private String projectName;
@NotBlank
private String maintainerName;
@NotBlank
private String maintainerEmail;
...
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... -validator