2
respostas

Visualizar o erro utilizando o th:errors

Olá, mesmo utilizando o th:errors não mostra o erro que ocorre caso o usuario não preencha os campos!

<html>
    <head>
        <meta charset="UTF-8"/>
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-aFq/bzH65dt+w6FI2ooMVUpc+21e0SRygnTpmBvdBgSdnuTN7QbdgL+OapgHtvPp" crossorigin="anonymous">
    </head>
    <body>
        <div class="container">
            <div class="container-fluid bg-secondary text-white p-5 mb-1">
                <h1 class="display-4">Novo Pedido</h1>
            </div>
            <div class="card">
                <form th:object="${requisicaoNovoPedido}" class="card-body"action="/pedido/novo" method="POST">
                    <div class="form-group">
                        <label for="nomeProduto">Produto</label>
                        <input th:field="*{nomeProduto}"  class="form-control" placeholder="Nome do produto"/>
                        <small>Informe qual o nome do produto.</small>
                        <div th:errors="*{nomeProduto}">
                            Erro do nome do produto
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="urlProduto">Url</label>
                        <input th:field="*{urlProduto}" class="form-control" placeholder="Url do produto"/>
                        <small>Procure em um site o produto que você deseja e cole aqui a URL.</small>
                        <div th:errors="*{urlProduto}">
                            Erro da url do produto
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="urlImagem">Imagem</label>
                        <input th:field="*{urlImagem}" class="form-control" placeholder="Url da imagem"/>
                        <small>Copie a URL de uma boa imagem do produto e cole aqui para ajudar compradores.</small>
                        <div th:errors="*{urlImagem}">
                            Erro na url da imagem
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="descricao">Produto</label>
                        <textarea th:field="*{descricao}" class="form-control mb-1" placeholder="Adicione detalhes importantes para os compradores."></textarea>
                        <div th:errors="*{descricao}">
                            Erro da descricao
                        </div>
                    </div>
                    <button type="submit" class="btn btn-primary">Cadastrar</button>
                </form>
            </div>

        </div>
    </body>
</html>
2 respostas

Resolvido, foi um bug do Eclipse!

Olá Jefferson, tudo bem?

Para que o th:errors funcione corretamente, é necessário que você esteja utilizando o Spring Validator. Certifique-se de que você definiu as validações corretas para cada campo em sua classe de modelo e que está utilizando a anotação @Valid no seu Controller.

Outro ponto importante é verificar se você está passando o objeto de modelo correto para a view. Verifique se o objeto que você está passando para o th:object é o mesmo que você está validando no Controller.

Caso você esteja seguindo todos esses passos e ainda assim não esteja visualizando os erros, verifique se há algum erro no console do navegador ou no log do servidor.

Espero ter ajudado e bons estudos!