Boa tarde!
Estou fazendo o curso antigo ainda e quero concluir ele para depois vir e fazer esse também. Mas estou com um probleminha nele.
Já reassisti o curso umas duas vezes mas não consigo identificar o erro no meu código até agora. Consegui cadastrar o Bean Validation sem problemas, configurar o retorno do erro para mostrar somente onde está o erro ao invés de um JSON gigante tudo mais. O problema aparece na hora que vou testar o código no Postman. Ele me retorna essa mensagem no corpo "Validation failed for object='topicosForm'. Error count: 2",
Aqui está o arquivo topicoForm para ver se tem algo de errado.
package br.com.alura.forum.controller.form;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import br.com.alura.forum.controller.repository.CursoRepository;
import br.com.alura.forum.modelo.Curso;
import br.com.alura.forum.modelo.Topico;
public class TopicosForm {
@NotNull @NotEmpty @Length(min = 5)
private String titulo;
@NotNull @NotEmpty @Length(min = 10)
private String mensagem;
@NotNull @NotEmpty
private String nomeCurso;
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getMensagem() {
return mensagem;
}
public void setMensagem(String mensagem) {
this.mensagem = mensagem;
}
public String getNomeCurso() {
return nomeCurso;
}
public void setNomeCurso(String nomeCurso) {
this.nomeCurso = nomeCurso;
}
public Topico converter(CursoRepository cursoRepository) {
Curso curso = cursoRepository.findByNome(nomeCurso);
return new Topico(titulo, mensagem, curso);
}
}
E também a parte do código no TopicosController.java que configura o retorno do erro
@PostMapping
public ResponseEntity<TopicoDto> cadastrar(@RequestBody @Valid TopicosForm form, UriComponentsBuilder uriBuilder) {
Topico topicos = form.converter(cursoRepository);
topicoRepository.save(topicos);
URI uri = uriBuilder.path("/topicos/{id}").buildAndExpand(topicos.getId()).toUri();
return ResponseEntity.created(uri).body(new TopicoDto(topicos));
}
@GetMapping("/{id}")
public DetalhesTopicoDto detalhar(@PathVariable Long id) {
Topico topico = topicoRepository.getReferenceById(id);
return new DetalhesTopicoDto(topico);
}
}