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

[Dúvida] Bean Validation não funciona quando tem BindingResult

O meu @Valid nao funciona quando adiciono o parametro BindingResult. O que pode ser?

Este código abaixo não faz o @Valid funcionar:

    @PostMapping
    @Transactional
    public ResponseEntity<ConsultorDTO> createConsultor(@Valid @RequestBody ConsultorDTO consultorDTO, BindingResult bindingResult, UriComponentsBuilder uriBuilder) {
        //Transforma o DTO em consultor
        Consultor consultor = consultorDTO.fromDTO();

        //Salva o consultor
        consultor = consultorService.save(consultor);

        //transforma o model em DTO
        consultorDTO = consultorDTO.toDTO(consultor, true);

        URI uri = uriBuilder.path("/api/consultores/{id}").buildAndExpand(consultor.getId()).toUri();

        return ResponseEntity.created(uri).body(consultorDTO.toDTO(consultor, true));
    }

Nesse código, abaixo, o @Valid funciona.

    @PostMapping
    @Transactional
    public ResponseEntity<ConsultorDTO> createConsultor(@Valid @RequestBody ConsultorDTO consultorDTO, UriComponentsBuilder uriBuilder) {
        //Transforma o DTO em consultor
        Consultor consultor = consultorDTO.fromDTO();

        //Salva o consultor
        consultor = consultorService.save(consultor);

        //transforma o model em DTO
        consultorDTO = consultorDTO.toDTO(consultor, true);

        URI uri = uriBuilder.path("/api/consultores/{id}").buildAndExpand(consultor.getId()).toUri();

        return ResponseEntity.created(uri).body(consultorDTO.toDTO(consultor, true));
    }
1 resposta
solução!

Oi,

O problema é que nesse caso específico o Spring depende da ordem de declaração dos parâmetros no método, sendo que o bindingResult deve ser declarado como último parâmetro do método.

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