1
resposta

erro ao colocar th:field no input

quando coloco na linha de input a tag th:field, ele apresenta o erro:

2022-09-18 11:38:35.368 ERROR 9656 --- [nio-8080-exec-8] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-8] Exception processing template "pedido/formulario": An error happened during template parsing (template: "class path resource [templates/pedido/formulario.html]")

org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/pedido/formulario.html]") at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELE ... Caused by: org.attoparser.ParseException: Error during execution of processor 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (template: "pedido/formulario" - line 18, col 13) at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupParser.parse(MarkupParser.java:257) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE]

segue meu formulário:

<div class="container">
    <div class="jumbotron mb-0">
        <h1 class="display-4">Novo Pedido</h1>
    </div>
    <div class="card mt-3">
        <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>Informa qual o nome do produto.</small>
            </div>
            <div class="form-group">
                <label for="urlProduto">Url</label>
                <input class="form-control" name="urlProduto" placeholder="url do produto" />
                <small>Procure em um site o produto que você deseja e cole a url da página aqui.</small>
            </div>
            <div class="form-group">
                <label for="urlImagem">Imagem</label>
                <input class="form-control" name="urlImagem" placeholder="url da imagem" />
                <small>Copie a url de uma boa imagem do produto e cole aqui para ajudar a conseguir compradores.</small>
            </div>
            <div class="form-group">
                <label for="descricao">Descrição</label>
                <textarea class="form-control" name="descricao"
                    placeholder="Adicione detalhes importantes para ajudar o comprador."></textarea>
            </div>
            <button class="btn btn-primary" type="submit">Cadastrar</button>
        </form>
    </div>
</div>

no início do curso é dito que precisa fazer uma alteração no pom.xml se estiver usando a versão 2.3 ou mais nova do Spring. minha versão é: Spring Boot :: (v2.7.3), incluí a seguinte dependência no meu pom.xml:

    <!-- apenas necessário a partir do spring 2.3 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>

O porque do erro e como solucionar?

1 resposta

Só adicionar um RequisicaoNovoPedido no parâmetro do formulário

 @GetMapping("formulario")
    public String formulario(RequisicaoNovoPedido requisicaoNovoPedido){
        return "pedido/formulario";
    }

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software