Professor meu retorno na validação esta como se fosse sem tratamento. Gostaria de uma ajuda. retorno do console esta estrando vou te enviar também. Estou usando o Postman.
package br.com.alura.springBoot.forum.controlle.form;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import br.com.alura.springBoot.forum.modelo.Curso;
import br.com.alura.springBoot.forum.modelo.Topico;
import br.com.alura.springBoot.forum.repository.CursoRepository;
public class TopicoForm {
@NotNull @NotEmpty @Length(min = 5)
private String titulo;
@NotNull @NotEmpty @Length(min = 10)
private String mensagem;
@NotNull @NotEmpty @Length(min= 3)
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);
}
}
package br.com.alura.forum.conf.Validacao;
public class ErroDeFormularioDto {
private String campo;
private String erro;
public ErroDeFormularioDto(String campo, String erro) {
this.campo = campo;
this.erro = erro;
}
public String getCampo() {
return campo;
}
public String getErro() {
return erro;
}
}
package br.com.alura.forum.conf.Validacao;
import java.io.Serializable;
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.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class ErroDeValidacaoHandler {
@Autowired
private MessageSource messageSource;
@ResponseStatus(code = HttpStatus.BAD_REQUEST)
@ExceptionHandler(MethodArgumentNotValidException.class)
public List<ErroDeFormularioDto>handle(MethodArgumentNotValidException expection) {
List<ErroDeFormularioDto> dto = new ArrayList<>();
List<FieldError> fieldErrors = expection.getBindingResult().getFieldErrors();
for(FieldError fieldError : fieldErrors) {
String mensagem = messageSource.getMessage(fieldError, LocaleContextHolder.getLocale());
ErroDeFormularioDto erro = new ErroDeFormularioDto(fieldError.getField(), mensagem);
dto.add(erro);
}
return dto;
}
}
package br.com.alura.springBoot.forum.controlle;
import java.net.URI; import java.util.List;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.util.UriComponentsBuilder;
import br.com.alura.springBoot.forum.controlle.dto.TopicoDTO; import br.com.alura.springBoot.forum.controlle.form.TopicoForm; import br.com.alura.springBoot.forum.modelo.Topico; import br.com.alura.springBoot.forum.repository.CursoRepository; import br.com.alura.springBoot.forum.repository.TopicoRepository;
@RestController @RequestMapping("/topicos") public class TopicoController {
@Autowired
private TopicoRepository topicoRepository;
@Autowired
private CursoRepository cursoRepository;
@GetMapping
public List<TopicoDTO> lista(String nomeCurso){
if(nomeCurso==null) {
List<Topico> topicos = topicoRepository.findAll();
return TopicoDTO.converte(topicos);
} else {
List<Topico> topicos = topicoRepository.findByCursoNome(nomeCurso);