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

Bean Validation não está funcionando [Spring Boot]

Estou tentando adicionar o Bean Validation na minha aplicação, mas, ele não funciona.

Controller:

@PostMapping
  public ResponseEntity<TopicoResponseDto> cadastrar(@Valid @RequestBody final TopicoRequestDto topicoRequestDto, UriComponentsBuilder uBuilder) {
    Topico topico = topicoRequestDto.converterParaTopico(cursoRepository);
    topicoRepository.save(topico);

    URI uri = uBuilder.path("/topicos/{id}").buildAndExpand(topico.getId()).toUri();
    TopicoResponseDto topicoResponseDto = new TopicoResponseDto(topico);

    return ResponseEntity.created(uri).body(topicoResponseDto);
  }

DTO:

package com.alura.forum.dto.request;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import com.alura.forum.model.Curso;
import com.alura.forum.model.Topico;
import com.alura.forum.repository.CursoRepository;

import lombok.Builder;
import lombok.Data;

@Data
@Builder
public class TopicoRequestDto {

  @NotNull
  @NotEmpty
  @Size(min = 3)
  private String titulo;

  @NotNull
  @NotEmpty
  @Size(min = 5)
  private String mensagem;

  @NotNull
  @NotEmpty
  private String nomeCurso;

  public Topico converterParaTopico(CursoRepository cursoRepository) {
    Curso curso = cursoRepository.findByNome(nomeCurso);
    return new Topico(titulo, mensagem, curso);
  }

}

pom.xml

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

<dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
</dependency>

<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
</dependency>

POSTMAN Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Ele não deveria armazenar no banco.

Testes que eu realizei para tentar arrumar, mas, sem sucesso:

  • mvn clean install
  • mvn idea:idea
  • mvn dependency:tree
  • deletar o target e gerar novamente
  • adicionar outras dependências além da spring boot starter validation
1 resposta
solução!

Oi Gabriel,

Deixa apenas a dependência do spring-boot-starter-validation no projeto e adiciona na classe TopicoRequestDto a anotação @NoArgsConstructor para testar se funciona.

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