Caros, bom dia.
Gostaria de perguntar se ao clicar em editar na lista de músicas, os campos (título, autor, etc) devem vir preenchidos para efetuarmos as alterações. Ou se é somente enviado para formulario.ok.jsp o id de música ?
muito obrigado 
dúvida na alteração de dados na loja virtual Caelum
6 Respostas
Caros, bom dia.
Gostaria de perguntar se ao clicar em editar na lista de músicas, os campos (título, autor, etc) devem vir preenchidos para efetuarmos as alterações. Ou se é somente enviado para formulario.ok.jsp o id de música ?
muito obrigado :D
Sei que vcs vão pedir segue os arquivos envolvidos :
package br.com.teste.modelo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Cargo {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
private String codigo;
private String descricao;
private Double vrmaodeobra;
package br.com.teste.logic;
import java.util.List;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.plugin.hibernate.Validate;
import br.com.teste.dao.DaoFactory;
import br.com.teste.modelo.Cargo;
@Component("cargo")
@InterceptedBy({AutorizadorInterceptor.class,DaoInterceptor.class})
public class CargoLogic {
private final DaoFactory daoFactory;
private List<Cargo> cargos;
private Cargo cargo;
public CargoLogic(DaoFactory daoFactory) {
this.daoFactory = daoFactory;
}
public void formulario(){
}
// formulario para edicao
public void editar(Cargo cargo) {
// carrega os dados no banco para edicao
this.cargo = this.daoFactory.getCargoDao().procura(cargo.getId());
}
// Adiciona um cargo novo ou atualiza se for edicao
public void armazena (Cargo cargo) {
this.daoFactory.beginTransaction();
this.daoFactory.getCargoDao().atualiza(cargo);
this.daoFactory.commit();
}
public void remove (Cargo cargo) {
this.daoFactory.beginTransaction();
this.daoFactory.getCargoDao().remove(cargo);
this.daoFactory.commit();
}
//lista todos os cargos
public void lista () {
cargos = this.daoFactory.getCargoDao().listaTudo();
}
//getter pra cargo
public Cargo getCargo(){
return cargo;
}
//getter pra lista de cargos
public List<Cargo> getCargos() {
return this.daoFactory.getCargoDao().listaTudo();
}
}
package br.com.teste.logic;
import org.vraptor.Interceptor;
import org.vraptor.LogicException;
import org.vraptor.LogicFlow;
import org.vraptor.annotations.Out;
import org.vraptor.view.ViewException;
import br.com.teste.dao.DaoFactory;
public class DaoInterceptor implements Interceptor {
private final DaoFactory factory = new DaoFactory();
@Out(key="br.com.teste.dao.DaoFactory")
public DaoFactory getFactory() {
return factory;
}
public void intercept(LogicFlow flow) throws LogicException, ViewException {
flow.execute();
if (factory.hasTransaction()) {
factory.rollback();
}
factory.close();
}
}
package br.com.teste.dao;
import org.hibernate.Session;
import org.hibernate.Transaction;
import br.com.teste.modelo.Cargo;
import br.com.teste.modelo.Classificacao;
import br.com.teste.modelo.Cliente;
import br.com.teste.modelo.Funcionario;
import br.com.teste.modelo.Produto;
import br.com.teste.util.HibernateUtil;
public class DaoFactory {
private final Session session;
private Transaction transaction;
public DaoFactory(){
session =HibernateUtil.getSession();
}
public void beginTransaction() {
this.transaction = this.session.beginTransaction();
}
public void commit() {
this.transaction.commit();
this.transaction = null;
}
public boolean hasTransaction() {
return this.transaction != null;
}
public void rollback() {
this.transaction.rollback();
this.transaction = null;
}
public void close() {
this.session.close();
}
public Dao<Funcionario> getFuncionarioDao() {
return new Dao<Funcionario>(this.session, Funcionario.class);
}
//alteração para funcionar usuario
public FuncionarioDao getFuncionarioDaos() {
return new FuncionarioDao(this.session);
}
public Dao<Cargo> getCargoDao() {
return new Dao<Cargo>(this.session, Cargo.class);
}
public Dao<Cliente> getClienteDao() {
return new Dao<Cliente>(this.session, Cliente.class);
}
public Dao<Produto> getProdutoDao() {
return new Dao<Produto>(this.session, Produto.class);
}
public Dao<Classificacao> getClassificacaoDao() {
return new Dao<Classificacao>(this.session, Classificacao.class);
}
}
package br.com.teste.dao;
import java.util.List;
import org.hibernate.Session;
public class Dao<T> {
private final Session session;
private final Class type;
public Dao(Session session, Class type) {
this.session = session;
this.type = type;
}
protected Session getSession() {
return session;
}
public void adiciona(T funcionario) {
this.session.save(funcionario);
}
public void atualiza(T funcionario) {
this.session.merge(funcionario);
}
public void remove(T funcionario) {
this.session.delete(funcionario);
}
public List<T> listaTudo(){
return this.session.createCriteria(this.type).list();
}
public T procura(Long id) {
return (T) session.load(this.type,id);
}
}
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cadastro de cargos</title>
<link rel="stylesheet" type="text/css" href="css/style.css"/>
</head>
<body>
<%@ include file="../menu.jsp" %>
<h1>Cadastro de cargos</h1>
<form action="cargo.armazena.logic" method="post">
<input type="hidden" name="cargo.id" value="${cargo.id}"/><br/>
<input type="text" name="cargo.id" value="${cargo.id}"/><br/>
Código:
<input type="text" name="cargo.codigo" value="${cargo.codigo}"/>
Descrição:
<input type="text" name="cargo.descricao" value="${cargo.descricao}"/><br/>
Mão-de-obra:
<input type="text" name="cargo.vrmaodeobra" value="${cargo.vrmaodeobra}"/><br/>
<input type="submit" />
</form>
</body>
</html>
Caros, boa noite.
Relembrando, consigo adicionar, ver listas e remover, mas na hora de alterar o JSP vem em branco, como coloquei um campo text para id, eu consigo ver esse valor , mas o restante dos campos vem em branco.
Conto com a ajuda de vcs. Muito obrigado e parabéns pela apostila da loja virtual.
abraços, Roger 
Realmente preciso de ajuda para resolver esse problema. Aguardo notícias.
Muito obrigado e boa noite a todos
Realmente preciso de ajuda para resolver esse problema. Aguardo notícias.
Muito obrigado e boa noite a todos
Caros, não sei se essa dúvida é simples demais para voces, mas gostaria de utilizar a tecnologia empregada na apostila Caelum, mas o problema citado me impede de continuar. Gostaria de um retorno de vcs.
Muito obrigado 
peço ajuda novamente, por favor verifiquem se existe erro!!!
gostaria de saber se há interesse em responder essa dúvida ?
pois até agora ninguém se prontificou a colaborar.

Consegui resolver o problema .
Relembrando : consigo adicionar, excluir e listar, mas não consigo visualizar os atributos no momento de editar, dessa forma somente via o id da tabela. Depois de muito quebrar a cabeça e sem nenhuma ajuda, recomecei o projeto e verifiquei que ao criar os getters e setters estava marcado “final” (nas classes modelo), refiz todos getters e setters e projeto está funcionando muito bem.
Muito obrigado 