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

Erro aula 8 - Invalid property 'precos[0].tipo

Boa tarde pessoal, tudo bem?

Estou enfrentando o seguinte erro ao alterar alguns campos que o professor faz.

Segue o erro

org.springframework.beans.NotReadablePropertyException: Invalid property 'precos[0].tipo' of bean class [br.com.casadocodigo.loja.models.Produto]: Bean property 'precos[0].tipo' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

Item que o professor mexe.

<c:forEach items="${tipos}" var="tipoPreco" varStatus="status">
            <div>
                <label>${tipoPreco}</label>
                <form:input path="precos[${status.index}].valor" />
                <form:hidden path="precos[${status.index}].tipo"
                    value="${tipoPreco}" />
            </div>
        </c:forEach>

Segue a classe Produto: Fiz o teste com getter e setter, mas tambem nao funcionou.

@Entity
public class Produto {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private int id;
    private String titulo;
    private String descricao;
    private int pagina;

    @ElementCollection
    private List<Preco> precos = new ArrayList<>();

    @DateTimeFormat
    private LocalDate dataLancamento;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public int getPagina() {
        return pagina;
    }

    public void setPagina(int pagina) {
        this.pagina = pagina;
    }

    public LocalDate getDataLancamento() {
        return dataLancamento;
    }

    public void setDataLancamento(LocalDate dataLancamento) {
        this.dataLancamento = dataLancamento;
    }
}

Classe Preco

@Embeddable
public class Preco {
    private BigDecimal valor;
    private TipoPreco preco;

    public BigDecimal getValor() {
        return valor;
    }

    public void setValor(BigDecimal valor) {
        this.valor = valor;
    }

    public TipoPreco getPreco() {
        return preco;
    }

    public void setPreco(TipoPreco preco) {
        this.preco = preco;
    }

}
2 respostas
solução!

Julio, tudo bem ?

Dá uma olhadinha nisso :

private TipoPreco preco;

O nome da variavel devia se chamar tipo e possuir seus getters e setters.

Pois no front você está chamando o atributo tipo, por esse motivo que está quebrando.

Troca e fala o que rolou ai :D

Mateus estou bem graças a Deus :D. E voce como vai?

Resolveu o problema sim, obrigado pelo suporte.