Tenho o seguinte código:
public void validate() {
String regex = getRowRegex();
for (String row : dna) {
if(!row.matches(regex)) {
throw new RuntimeException("Sequência de base nitrogenada inválida: " + row);
}
}
}
Em vez de lançar RuntimeException com MethodArgumentNotValidException, porém com uma mensagem igual a do exemplo acima, como ficaria? Eu também fiz conforme a aula para exemplos mais comuns como atributos nulos e vazios.
Já tenho a classe:
@RestControllerAdvice
public class ErrorValidationHandler {
@Autowired
private MessageSource messageSource;
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(code = HttpStatus.BAD_REQUEST)
public List<ValidationErrorDTO> handle(MethodArgumentNotValidException exception) {
List<ValidationErrorDTO> validationErrorsDTO = new ArrayList<>();
List<FieldError> fieldErrors = exception.getBindingResult().getFieldErrors();
fieldErrors.forEach(e -> {
String message = messageSource.getMessage(e, LocaleContextHolder.getLocale());
validationErrorsDTO.add(new ValidationErrorDTO(e.getField(), message));
});
return validationErrorsDTO;
}
}