Ajuda Exercício - Apostila Caelum FJ28[RESOLVIDO]

2 respostas
superminina

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.java
package 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;
	}
	
	
	
}
DaoFactory.java
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.

2 Respostas

R

O problema está na seguinte linha:

<display:table name="${cds}" requestURI=“cd.lista.logic”>

está faltando adicionar o ID, sendo que fica assim:

<display:table id=“cd” name="${cds}" requestURI=“cd.lista.logic”>

superminina

Aaaaaaaaaaa!
Muito obrigada! :slight_smile: :slight_smile:

Agora está funcionando! \o/

Valeu pela ajuda! :wink:

Criado 26 de fevereiro de 2008
Ultima resposta 5 de mar. de 2008
Respostas 2
Participantes 2