Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Estou tendo o seguinte ERROR, o código está tudo certinho já fiz até um git clone no projeto original e testei se era realmente o meu Erro, porém, não era.

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

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

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

Me ajudem por favor.

segue o link do meu código no github: https://github.com/Erick-Fernandes-dev/Spring_MVC

3 respostas
solução!

Olá Erick,

Da uma olhada na sua base de dados se não tem nenhum pedido com o status null ou com status diferente de AGUARDANDO, APROVADO, ENTREGUE.

Se tiver algum registro assim, muda o valor do status para um status valido ou apague esse registro da base.

Abraço

package br.com.algnologia.mvc.mudi.model;

import java.math.BigDecimal;
import java.time.LocalDate;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Pedido {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String nomeProduto;
    private BigDecimal valorNegociado;
    private LocalDate dataDaEntrega;

    private String urlProduto;
    private String urlImagem;
    private String descricao;

    @Enumerated(EnumType.STRING)
    private StatusPedido status;


    public String getNomeProduto() {
        return nomeProduto;
    }
    public void setNomeProduto(String nomeProduto) {
        this.nomeProduto = nomeProduto;
    }
    public BigDecimal getValorNegociado() {
        return valorNegociado;
    }
    public void setValorNegociado(BigDecimal valorNegociado) {
        this.valorNegociado = valorNegociado;
    }
    public LocalDate getDataDaEntrega() {
        return dataDaEntrega;
    }
    public void setDataDaEntrega(LocalDate dataDaEntrega) {
        this.dataDaEntrega = dataDaEntrega;
    }
    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 getDescricao() {
        return descricao;
    }
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public StatusPedido getStatus() {
        return status;
    }
    public void setStatus(StatusPedido status) {
        this.status = status;
    }

}

Ai consegui setar apenas o valor do enum.

package br.com.algnologia.mvc.mudi.dto;

import javax.validation.constraints.NotBlank;

import br.com.algnologia.mvc.mudi.model.Pedido;
import br.com.algnologia.mvc.mudi.model.StatusPedido;

public class RequisicaoNovoPedido {

    @NotBlank//NotBlank.requisicaoNovoPedido.nomeProduto=não pode estar em branco
    private String nomeProduto;

    @NotBlank
    private String urlProduto;

    @NotBlank
    private String urlImagem;
    private String descricao;

    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 getDescricao() {
        return descricao;
    }
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    public Pedido toPedido() {
        Pedido pedido = new Pedido();

        pedido.setNomeProduto(nomeProduto);
        pedido.setUrlProduto(urlProduto);
        pedido.setUrlImagem(urlImagem);
        pedido.setDescricao(descricao);
        pedido.setStatus(StatusPedido.AGUARDANDO);

        return pedido;
    }

}

Depois fui no meu arquivo html e alterei:

<html>
    <head th:replace="~{base :: head}"></head>
    <body class="bg-dark">    
        <div th:replace="~{base :: logo}"></div>

        <div class="container">
            <div th:replace="~{base :: titulo('Meus Pedidos')}"></div>

            <nav class="navbar navbar-expand navbar-light bg-light d-flex justify-content-between mb-3">
                <div class="navbar-nav">
                    <a  class="nav-item nav-link" href="/home">Todos</a>
                    <a  class="nav-item nav-link" href="/home/aguardando">Aguardando</a>
                    <a  class="nav-item nav-link" href="/home/aprovado">Aprovado</a>
                    <a  class="nav-item nav-link" href="/home/entregue">Entregue</a>
                </div>
                <a href="/pedido/formulario"><button class="btn btn-outline-secondary my-2 my-sm-0">Novo</button></a>
            </nav>

            <div class="card mb-3" th:each="pedido : ${pedidos}">

                <th:block th:switch="${pedido.status.name()}">
                    <div th:case="'AGUARDANDO'" class="card-header alert-warning" th:text="${pedido.nomeProduto}">Nome do Produto</div>
                    <div th:case="'APROVADO'" class="card-header alert-success" th:text="${pedido.nomeProduto}">Nome do Produto</div>
                    <div th:case="'ENTREGUE'" class="card-header alert-dark" th:text="${pedido.nomeProduto}">Nome do Produto</div>
                </th:block>

                <div class="card-body">
                    <div class="row">
                        <div class="col-12 col-sm-8 mb-3">
                            <div class="row ">
                                <div class="col-md-5">Valor: <span th:if="${pedido.valorNegociado} != null" th:text="${'R$ ' + #numbers.formatDecimal(pedido.valorNegociado, 3, 'POINT', 2, 'COMMA')}">200,99</span></div>
                                <div class="col-md-6">Data da entrega: <span th:text="${#temporals.format(pedido.dataDaEntrega, 'dd/MM/yyyy')}">10/02/2020</span></div>
                            </div>

                            <div>Produto</div> 
                            <div> <input class="form-control" th:value="${pedido.urlProduto}" value="url do produto" /></div>

                            <div>Descrição</div>
                            <div>
                                <textarea class="form-control" th:text="${pedido.descricao}">descrição do pedido</textarea>
                            </div>
                        </div>
                        <div class="col-12 col-sm-4">
                            <div>
                                <img class="img-thumbnail" th:src="${pedido.urlImagem}" src="" />
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </body>
</html>