[Resolvido] FJ28 - VRaptor Hibernate Ajax - Dificuldade em popular view /produtos/edit.jsp

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?

O problema ai é que a sua classe se chama Produtos… Ou seja, você deve acessá-la usando a seguinde EL: ${produtos.nome}
OU, a seguinte alternativa: (SUGIRO ESSA ABAIXO)
Renomeie sua classe para Produto (no singular) pois ela se trata de 1 produto… Um conjunto de produtos será chamado de produtos… E acesse usando a mesma EL que você está usando.

e cuidado… se o método do controller é update, a action do form tb vai ser update.

Obrigado pela ajuda.
Rafael, segui sua dica e renomeei a classe Produtos para Produto e a anotei com @Table(name = “Produtos”), no BD tá no plural.
Lucas, sobre o foi um pequeno descuido ao refazer os exercícios da apostila.
Tá tudo funfando dentro dos conformes.