Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se
Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Meu código continua apresentando o JSON inteiro.

Essa é a classe de Validação:

package config.validation;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.http.HttpStatus;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
public class ValidationErrorHandler {

    @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;
    }
}

Esse é a classe do DTO:

package config.validation;

public class ErroFormDto {

    private String campo;
    private String erro;

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

    public String getCampo() {
        return campo;
    }

    public String getErro() {
        return erro;
    }    
}

E aqui o postman: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Não inseri mais nada do projeto, nenhuma referencia chamando essas classes, não sei se é por isso que não exibe nada.

2 respostas
solução!

Oi Leandro,

A princípio está certinho o código. Mas notei que o pacote da sua classe é o config.validation e talvez a sua classe main(ForumApplication) esteja em outro nível de pacote e com isso não está enxergando e carregando suas classes.

Posta aqui um print da sua estrutura de pacotes do projeto.

Era erro nos pacotes mesmo. Obrigado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software