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

Bean Validation - @Valid e BindingResult

Boa tarde,

Não estou conseguindo efetivar as validações do javax validation.

Após a configuração o metodo .hasErrors() sempre retorna false mesmo quando os campos anotados com @NotBlank estão vazios.

PedidoController.java

package br.com.alura.mudi.mudi.controller;

import br.com.alura.mudi.mudi.dto.RequisicaoNovoPedido;
import br.com.alura.mudi.mudi.model.Produto;
import br.com.alura.mudi.mudi.repository.ProdutoRepository;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.validation.Valid;




@Controller
@RequestMapping("pedidos")
public class PedidoController {

    @Autowired
    ProdutoRepository produtoRepository;

    @GetMapping("formulario")
    public String formulario() {
        return "pedidos/formulario";
    }

    @PostMapping("novo")
    public String novo(@Valid RequisicaoNovoPedido requisicao, BindingResult result) {
        System.out.println("HAS ERROS");
        System.out.println(result.hasErrors());
        Produto produto = requisicao.toProduto();
        produtoRepository.save(produto);
        return "redirect:/home";
    }

}

RequisicaoNovoPedido.java

package br.com.alura.mudi.mudi.dto;

import br.com.alura.mudi.mudi.model.Produto;

import javax.validation.constraints.NotBlank;


public class RequisicaoNovoPedido {

    @NotBlank
    private String nomeProduto;

    @NotBlank
    private String urlProduto;

    @NotBlank
    private String urlImagem;

    private String descricaoProduto;

    //GETTERS AND SETTERS
    public String getNomeProduto() {
        return nomeProduto;
    }

    public void setNomeProduto(String nomeProduto) {
        this.nomeProduto = nomeProduto;
    }

    public String getUrlProduto() {
        return urlProduto;
    }

    public void setUrlProduto(String urlProduto) {
        this.urlProduto = urlProduto;
    }

    public String getUrlImagem() {
        return urlImagem;
    }

    public void setUrlImagem(String urlImagem) {
        this.urlImagem = urlImagem;
    }

    public String getDescricaoProduto() {
        return descricaoProduto;
    }

    public void setDescricaoProduto(String descricaoProduto) {
        this.descricaoProduto = descricaoProduto;
    }

    public Produto toProduto() {
        Produto produto = new Produto();
        produto.setUrlProduto(urlProduto);
        produto.setNomeProduto(nomeProduto);
        produto.setUrlImagem(urlImagem);
        produto.setDescricaoProduto(descricaoProduto);
        return produto;
    }

}

Estou começando agora a utilizar spring as configurações estão certas ?

Utilizei Maven para baixar as dependencias e estou utilizando o Java 8.

1 resposta
solução!

Consegui resolver!

Ao fazer o import via inteliJ o mesmo adicionou a dependencia errada no maven após a substituicao funcionou normalmente.

Esta é a dependencia correta:

<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.1.7.Final</version>
        </dependency>