Boa Tarde a todos do GUJ.
Estou estudando a apostila FJ28 da Caelum mas estou com dificuldade para popular os input text e textarea da view /produtos/edit.jsp
Minha Classe ProdutosDAO
package br.com.caelum.goodbuy.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import br.com.caelum.goodbuy.models.Produtos;
import br.com.caelum.vraptor.ioc.Component;
@Component
public class ProdutosDAO
{
private final Session session;
public ProdutosDAO(Session session)
{
this.session = session;
}
public Produtos loadProdutoByID(Long id)
{
return (Produtos) this.session.load(Produtos.class, id);
}
public void insert(Produtos produto)
{
Transaction tx = session.beginTransaction();
this.session.save(produto);
tx.commit();
}
@SuppressWarnings("unchecked")
public List<Produtos> list()
{
return (List<Produtos>) this.session.createCriteria(Produtos.class).list();
}
public void update(Produtos produto)
{
Transaction tx = session.beginTransaction();
this.session.update(produto);
tx.commit();
}
public void delete(Produtos produto)
{
Transaction tx = session.beginTransaction();
this.session.delete(produto);
tx.commit();
}
}
Minha classe ProdutosController
package br.com.caelum.goodbuy.controllers;
import java.util.List;
import br.com.caelum.goodbuy.dao.ProdutosDAO;
import br.com.caelum.goodbuy.models.Produtos;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
@Resource
public class ProdutosController
{
private final ProdutosDAO dao;
private final Result result;
public ProdutosController(ProdutosDAO dao, Result result)
{
this.dao = dao;
this.result = result;
}
public void fInsert() { }
public Produtos edit(Long id)
{
return dao.loadProdutoByID(id);
}
public List<Produtos> list()
{
return (List<Produtos>) dao.list();
}
public void insert(Produtos produto)
{
dao.insert(produto);
result.redirectTo(this).list();
}
public void update(Produtos produto)
{
dao.update(produto);
result.redirectTo(this).list();
}
public void delete(Long id)
{
Produtos produto = dao.loadProdutoByID(id);
dao.delete(produto);
result.redirectTo(this).list();
}
}
Minha view /produtos/edit.jsp
<form action="altera">
<fieldset>
<legend>Editar Produto</legend>
<label for="nome">ID:</label>
<input type="text" id="id" name="produto.id" value="${produto.id}" />
<label for="nome">Nome:</label>
<input type="text" id="nome" name="produto.nome" value="${produto.nome}" />
<label for="descricao">Descrição:</label>
<textarea id="descricao" name="produto.descricao">${produto.descricao}
</textarea>
<label for="preco">Preço:</label>
<input type="text" id="preco" name="produto.preco" value="${produto.preco}" />
<button type="submit">Editar</button>
</fieldset>
</form>
Se eu alterar o método ProdutosController.edit() para:…
public Produtos edit(Long id)
{
Produtos produto = dao.loadProdutoByID(id);
System.err.println("ProdutosController.edit()");
System.err.println("ID : " + produto.getId());
System.err.println("NOME : " + produto.getNome());
System.err.println("DESC : " + produto.getDescricao());
System.err.println("PREÇO: " + produto.getPreco());
return produto;
}
…os dados do produto são exibidos no log.
Nenhum erro é exibido.
Uma vez que a view é carregada em branco e eu preencher os campos com os novos dados do produto(desde que o ID do produto esteja correto), é feita a atualização no BD.
Como já informei no início do post, minha dificuldade é para popular os inputs e textarea da
view /produtos/edit.jsp
Alguem pode me ajudar?