5
respostas

Continua aparecendo NULL na tabela produto_precos

Mesmo eu alterando e acrescentando o value="${tipoPreco}" não muda na tabela.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Livros de Java, Android, PHP, Ruby e muito mais - Casa do Código</title>
</head>
<body>

    <form action="/casadocodigo/produtos" method="post">
        <div>
            <label>Título</label>
            <input type="text" name="titulo">
        </div>
        <div>
            <label>Descrição</label>
            <textarea rows="10" cols="20" name="descricao"></textarea>
        </div>
        <div>
            <label>Páginas</label>
            <input type="text" name="paginas">
        </div>
        <c:forEach items="${tipos }" var="tipoPreco" varStatus="status">
            <div>
                <label>${tipoPreco }</label>
                <input type="text" name="precos[${status.index }].valor">
                <input type="hidden" name="precos[${status.index }].tipo" value="${tipoPreco }">
            </div>    
        </c:forEach>

        <button type="submit">Cadastrar</button>
    </form>

</body>
</html>
5 respostas

Melina, boa noite tudo bem ?

Eu acho que voce deve estar com o mesmo problema que tive, veja se a sua classe Preco, na variavel TipoPreco é preco, caso seja voce tem que trocar o nome dela para tipo.

se voce ver o seu foreach o input precos[${status.index }].tipo <- sendo assim a variavel tbm tem que ser TIPO.

Caso esteja diferente, avisa ai.

Obs: Abaixo esta uma possivel resolucao do seu problema.

https://cursos.alura.com.br/forum/topico-erro-aula-8-invalid-property-precos-0-tipo-54238

Na minha classe Preco está como tipo já.

package br.com.casadocodigo.loja.models;

import java.math.BigDecimal;

import javax.persistence.Embeddable;

@Embeddable
public class Preco {

    private BigDecimal valor;
    private TipoPreco tipo;

    public BigDecimal getValor() {
        return valor;
    }
    public void setValor(BigDecimal valor) {
        this.valor = valor;
    }
    public TipoPreco getTipo() {
        return tipo;
    }
    public void setTipo(TipoPreco tipo) {
        this.tipo = tipo;
    }

}

Melina, Boa tarde!

Eu achei que voce estava com o mesmo erro que o meu =/ Ja tentou deletar a tabela e refazer ela ?

Tenta rever o video novamente, pois alguma coisa deve ter deixado pra tras

Melina, você está usando o MySQL mesmo? Eu estou usando PostgreSQL e ele cria a tabela produto_preco mas não preenche com dados. Acho que é pela falta da chave primária.

Melina, solucionei o meu problema de Null com a solução que o Mihael postou aqui no Fórum. Meu problema era na classe Produto.

    @ElementCollection
    private List<Preco> precos;

O meu estava preco e não precos. Alterei para precos e tudo funcionou ok!