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

Erro formulário ou dependências

Finalizei essa aula ontem, porém hoje que fui rodar o projeto na parte de mostrar os dados ele me retorna alguns erros:

os principais logs são: An error happened during template parsing (template: "class path resource [templates/trabalhador/formulario.html]") org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/trabalhador/formulario.html]")

Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "trabalhador.matricula" (template: "trabalhador/formulario" - line 23, col 52)

Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "trabalhador.matricula" (template: "trabalhador/formulario" - line 23, col 52)

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'matricula' cannot be found on null

Trabalhador.java :

package com.app.mina.domain.trabalhador;

import jakarta.persistence.*;

@Entity
@Table(name = "trabalhador")
public class Trabalhador {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String matricula;
    private String nome;
    private String empresa;
    private String rfid;
    private String tipo;
    private String habilitar;

    public Trabalhador() {
        // Construtor padrão sem argumentos
    }

    public Trabalhador(DadosCadastroTrabalhador dados) {
        this.id = dados.id();
        this.matricula = dados.matricula();
        this.nome = dados.nome();
        this.empresa = dados.empresa();
        this.rfid = dados.rfid();
        this.tipo = dados.tipo();
        this.habilitar = dados.habilitar();
    }

    @Override
    public String toString() {
        return "Trabalhador{" +
                "matricula='" + matricula + '\'' +
                ", nome='" + nome + '\'' +
                ", empresa='" + empresa + '\'' +
                ", rfid='" + rfid + '\'' +
                ", tipo='" + tipo + '\'' +
                ", habilitar='" + habilitar + '\'' +
                '}';
    }

    public Long getId() {
        return id;
    }

    public String getMatricula() {
        return matricula;
    }

    public String getNome() {
        return nome;
    }

    public String getEmpresa() {
        return empresa;
    }

    public String getRfid() {
        return rfid;
    }

    public String getTipo() {
        return tipo;
    }

    public String getHabilitar() {
        return habilitar;
    }
}

trabalhadorController.java

package com.app.mina.domain.trabalhador;

import jakarta.persistence.*;

@Entity
@Table(name = "trabalhador")
public class Trabalhador {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String matricula;
    private String nome;
    private String empresa;
    private String rfid;
    private String tipo;
    private String habilitar;

    public Trabalhador() {
        // Construtor padrão sem argumentos
    }

    public Trabalhador(DadosCadastroTrabalhador dados) {
        this.id = dados.id();
        this.matricula = dados.matricula();
        this.nome = dados.nome();
        this.empresa = dados.empresa();
        this.rfid = dados.rfid();
        this.tipo = dados.tipo();
        this.habilitar = dados.habilitar();
    }

    @Override
    public String toString() {
        return "Trabalhador{" +
                "matricula='" + matricula + '\'' +
                ", nome='" + nome + '\'' +
                ", empresa='" + empresa + '\'' +
                ", rfid='" + rfid + '\'' +
                ", tipo='" + tipo + '\'' +
                ", habilitar='" + habilitar + '\'' +
                '}';
    }

    public Long getId() {
        return id;
    }

    public String getMatricula() {
        return matricula;
    }

    public String getNome() {
        return nome;
    }

    public String getEmpresa() {
        return empresa;
    }

    public String getRfid() {
        return rfid;
    }

    public String getTipo() {
        return tipo;
    }

    public String getHabilitar() {
        return habilitar;
    }
}
2 respostas

formulário.html

<head>
    <title>Cadastro de trabalhador</title>
</head>
<body>
<div layout:fragment="conteudo">
    <h1>
        Cadastro Trabalhador
    </h1>

    <form method="post" action="/trabalhador">

        <div>
            <label for="matricula">
                Matricula:
            </label>
            <input id="matricula" name="matricula" th:value="${trabalhador.matricula}">
        </div>

        <div>
            <label for="nome">
                Nome:
            </label>
            <input id="nome" name="nome" th:value="${trabalhador.nome}">
        </div>

        <div>
            <label for="empresa">
                Empresa:
            </label>
            <input id="empresa" name="empresa" th:value="${trabalhador.empresa}">
        </div>

        <div>
            <label for="tipo">
                Tipo:
            </label>
            <input id="tipo" name="tipo" th:value="${trabalhador.tipo}">
        </div>

        <div>
            <label for="rfid">
                RFID:
            </label>
            <input id="rfid" name="rfid" th:value="${trabalhador.rfid}">
        </div>

        <div>
            <label for="habilitar">
                Habilitar:
            </label>
            <input id="habilitar" name="habilitar" th:value="${trabalhador.habilitar}">
        </div>

        <input type="submit" value="Cadastrar">

    </form>
</div>
</body>
</html>
solução!

Oi!

Veja as aulas que mostram como resolver o problema ao entrar na tela de cadastro após ter feito a tela de edição.

Deve ser o mesmo cenário que o seu, pois você está acessando na página a variável ${trabalhador} que não deve ter sido adicionada no Model.