Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Pergunta o meu projeto não consegue exibir a mensagem de erro pequena, no postman.

` No curso Spring boot api rest, é utilizado a versão do spring-boot-starter-parent 2.1.4 release. No meu projeto estou usando a versão 2.4.1. Pergunta o meu projeto não consegue exibir a mensagem de erro pequena, no postman. Seria por causa da versão do Spring boot. Tentei mudar a versão para 2.1.4 e pareceu vários erros de importações nas classes. Procurei um exemplo testei tratamento de erro método argument not valid exception, na versão atual do meu projeto 2.4.1 mas não encontrei.

{ "timestamp": "2021-01-16T00:39:10.625+00:00", "path": "/topicos", "status": 400, "error": "Bad Request", "message": "Validation failed for argument at index 0 in method: public org.springframework.http.ResponseEntity<br.com.alura.forum.controller.dto.TopicoDTO> br.com.alura.forum.controller.TopicosController.cadastrar(br.com.alura.forum.controller.form.TopicoForm,org.springframework.web.util.UriComponentsBuilder), with 2 error(s): [Field error in object 'topicoForm' on field 'nomeCurso': rejected value []; codes [NotEmpty.topicoForm.nomeCurso,NotEmpty.nomeCurso,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [topicoForm.nomeCurso,nomeCurso]; arguments []; default message [nomeCurso]]; default message [não deve estar vazio]] [Field error in object 'topicoForm' on field 'nomeCurso': rejected value []; codes [Length.topicoForm.nomeCurso,Length.nomeCurso,Length.java.lang.String,Length]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [topicoForm.nomeCurso,nomeCurso]; arguments []; default message [nomeCurso],2147483647,10]; default message [o comprimento deve ser entre 10 e 2147483647]] ", "requestId": "0df7eee1-8", "trace": "org.springframework.web.bind.support.WebExchangeBindException: Validation failed for argument at index 0 in method: public org.springframework.http.ResponseEntity<br.com.alura.forum.controller.dto.TopicoDTO> br.com.alura.forum.controller.TopicosController.cadastrar(br.com.alura.forum.controller.form.TopicoForm,org.springframework.web.util.UriComponentsBuilder), with 2 error(s): [Field error in object 'topicoForm' on field 'nomeCurso': rejected value []; codes [NotEmpty.topicoForm.nomeCurso,NotEmpty.nomeCurso,NotEmpty.java.lang.String,NotEmpty]; arguments

7 respostas

Boa noite. O que seria essa mensagem de erro pequena?

[ { "campo": "mensagem", "erro": "não pode estar vazio" }, { "campo": "mensagem", "erro": "tamanho deve estar entre 10 e 2147483647" } ]

esta mensagem acima refiz o projeto com a versão 2.1.4 rodou mas na versão 2.3.8.RELEASE não vem assim vem erro longo. comparei os 2 projetos e não consegui achar o erro.

Oi Walter,

Faz um teste, altere a exception da classe ErroDeValidacaoHandler de MethodArgumentNotValidException para BindException:

@ResponseStatus(code = HttpStatus.BAD_REQUEST)
@ExceptionHandler(BindException.class)
public List<ErroDeFormularioDto> handle(BindException exception) {
    //codigo continua igual aqui
}

Veja se funciona desse jeito.

de acordo que vc demonstrou acima o método .getBindingResult() nao existe na exception BindException. https://github.com/WalterHeitor/forumSprinBootRestAlura link do projeto.

Oi Walter,

Olhei o seu projeto e na classe ErroDeValidacaoHandler está faltando adicionar a anotação @RestControllerAdvice, por isso o Spring nem carregou a classe.

Veja se agora resolve :)

ainda não vou subir o projeto para vc eu tinha colocada essa anotação mas refiz o projeto. será que e a versão do Spring boot?

solução!

Consegui resolver mudei a versão do Spring boot parent para 2.3.1.RELEASE pois a versão RESEASE já foi testada e aprovada e também e compatível com a versão do Spring boot admin starter starter. muito obrigado pela atenção