Me ajudem por favor.
segue o link do meu código no github: https://github.com/Erick-Fernandes-dev/Spring_MVC
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Me ajudem por favor.
segue o link do meu código no github: https://github.com/Erick-Fernandes-dev/Spring_MVC
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>