Pessoal,
Eu estou seguindo esta apostila para meu aprendizado, mas estou me deparando com um problema e não estou conseguindo enxergar aonde ele está.
Eu consigo listar os cds, mas quando passo o mouse no link de editar ou remover, cd.id está em branco. Logo, não consigo editar ou remover algum cd. Isto não acontece para músicas.
Abaixo segue o código dos envolvidos.
lista.ok.jsp<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Lista de cds</title>
<link rel="stylesheet" type="text/css" href="css/style.css"/>
</head>
<body>
<%@ include file="../menu.jsp" %>
<h1>CDs</h1>
<display:table name="${cds}" requestURI="cd.lista.logic">
<display:column property="id" />
<display:column property="titulo" sortable="true"/>
<display:column property="artista" sortable="true"/>
<display:column property="genero" sortable="true"/>
<display:column>
a href="cd.editar.logic?cd.id=${cd.id }">editar</a>
</display:column>
<display:column>
a href="cd.remove.logic?cd.id=${cd.id }">remover</a>
</display:column>
</display:table>
</body>
</html>
tirei o < inicial do href pq estava sendo removido pelo fórum
CdLogic.javapackage logic;
import java.util.List;
import loja.DaoInterceptor;
import modelo.Cd;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;
import dao.DaoFactory;
@Component("cd")
@InterceptedBy(DaoInterceptor.class)
public class CdLogic
{
private final DaoFactory daoFactory;
private Cd cd;
private List<Cd> cds;
public CdLogic(DaoFactory daoFactory)
{
this.daoFactory = daoFactory;
}
//formulario para adicao
public void formulario()
{
}
//formulario para edicao
public void editar(Cd cd)
{
this.cd = this.daoFactory.getCdDao().procura(cd.getId());
}
//adiciona um cd novo ou atualiza se for edicao
public void armazena(Cd cd)
{
this.daoFactory.beginTransaction();
this.daoFactory.getCdDao().atualiza(cd);
this.daoFactory.commit();
}
//remove um cd
public void remove(Cd cd)
{
this.daoFactory.beginTransaction();
this.daoFactory.getCdDao().remove(cd);
this.daoFactory.commit();
}
//lista todos os cds
public void lista()
{
this.cds = this.daoFactory.getCdDao().listaTudo();
}
public Cd getCd() {
return cd;
}
public List<Cd> getCds() {
return cds;
}
}
package dao;
import modelo.Cd;
import modelo.Musica;
import modelo.Usuario;
import org.hibernate.Session;
import org.hibernate.Transaction;
import 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 getUsuarioDao()
{
return new Dao<Usuario>(this.session,Usuario.class);
}
public Dao<Cd> getCdDao()
{
return new Dao<Cd>(this.session,Cd.class);
}
public Dao<Musica> getMusicaDao()
{
return new Dao<Musica> (this.session,Musica.class);
}
}
Pedaço do código fonte da página
(Não coloquei com a tag code pois estava removendo informações importantes e tirei tb o < inicial pq estava sendo removido o código)
<td>
a "href="cd.editar.logic?cd.id=">editar
</td>
Se precisar de mais algum, eu colo aqui.
O que eu estou deixando passar em branco? :P
Obrigada.
