Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Bean Validation com Spring Cloud

Olá, estou validando os campos da requisição na chamada de um microserviço usando Spring Cloud, os campos até são validados, porém a minha classe com o @RestControllerAdvice não está conseguindo pegar o "MethodArgumentNotValidException", em projetos com Spring Cloud é necessario alguma configuração adcional ?

"@RestController @RequestMapping("/compra") public class CompraController {

@Autowired
private CompraService compraService;

@RequestMapping(method = RequestMethod.POST)
public Compra realizaCompra(@RequestBody @Valid CompraDTO compra) {
    return compraService.realizaCompra(compra);
}

}"

"@RestControllerAdvice public class ErroDeValidacaoHandler {

@Autowired
private MessageSource messageSource;

@ResponseStatus(code = HttpStatus.BAD_REQUEST)
@ExceptionHandler(MethodArgumentNotValidException.class)
public List<ErroFormDto> handle(MethodArgumentNotValidException exception) {
    List<ErroFormDto> dto = new ArrayList<>();

    List<FieldError> fieldErrors = exception.getBindingResult().getFieldErrors();
    fieldErrors.forEach(e -> {
        String mensagem = messageSource.getMessage(e, LocaleContextHolder.getLocale());
        ErroFormDto erro = new ErroFormDto(e.getField(), mensagem);
        dto.add(erro);
    });

    return dto;
}

}"

"package br.com.alura.microservice.validacao;

public class ErroFormDto {

private String campo;
private String erro;

public ErroFormDto(String campo, String erro) {
    this.campo = campo;
    this.erro = erro;
}

public String getCampo() {
    return campo;
}

public void setCampo(String campo) {
    this.campo = campo;
}

public String getErro() {
    return erro;
}

public void setMessage(String erro) {
    this.erro = erro;
}

} "

1 resposta
solução!

Problema Resolvido. O pacote contendo as classes de validação estavam com o caminho errado.