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

Erro ao adicionar o th:case

Tue Aug 23 21:19:10 BRT 2022 There was an unexpected error (type=Internal Server Error, status=500). An error happened during template parsing (template: "class path resource [templates/home.html]") org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/home.html]") Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "pedido.status.name()" (template: "home" - line 18, col 38)

<html>
    <head th:replace="~{base :: head}"> </head>
    <body>
              <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="">Todos<a/>
                                      <a class="nav-item nav-link" href="">Aguardando<a/>
                                      <a class="nav-item nav-link" href="">Aprovado<a/>
                                      <a class="nav-item nav-link" href="">Entregue<a/>
                                </div>'
                                <a href="/pedido/formulario"><button class="btn btn-secondary">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-sucess" 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:text="${pedido.valorNegociado}"></span>200,99</div>
                                <div class="col-md-6">Data da entrega: <span th:text="${pedido.dataDaEntrega}"></span>10/02/2020</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>
@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 StatusPedido getStatus() {
        return status;
    }
    public void setStatus(StatusPedido status) {
        this.status = status;
    }



}
4 respostas
solução!

.......

Fala Artur bom dia ! Qual foi a sua solução para resolver essa problema ? Tenho passado por um problema semelhante, a causa diz que o a propriedade do campo tipo objeto é null ou não publica dentro do model.Pedido., curioso que eu setei o atributo, criei a classe Enum especifiquei a anotação e ainda tomo esse erro, compartilha aí qual foi a sua solução se puder Obrigado ! Abraços e bons estudos

Fala Nicolas, verifique se no seu banco de dados tem algum status null.

Valeu Ayrton Uma observação eu declarei o atributo "url_produto" para o banco de dados VARCHAR(255) porém tem Url de Produtos que excedem o limite, valeu obrigado por me ajudar a passar mais esse desafio.