Erro javax.servlet.ServletException: id to load is required for loading?

4 respostas
Andergt6
Boa tarde Galera estou encontrando o seguinte problema tenho a Jsp :
<%@page pageEncoding="Cp1252" contentType="text/html; charset=Cp1252" %>
<%@taglib uri="http://displaytag.sf.net" prefix="display" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/>
<link rel="stylesheet" type="text/css" href="css/style.css"/>
<title></title>
</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"/>
<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>

Ela lista os itens que eu tenho no banco e me dá a opção por dois links de editar ou remover os itens , estou usando o vraptor e hibernate para fazer essa implementação o problema é que quando eu vou testar e clico em editar acontece o seguinte erro:

javax.servlet.ServletException: id to load is required for loading
org.vraptor.http.DefaultDispatcher.dispatch(DefaultDispatcher.java:69)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

pelo que eu vi o id não carrega ou seja na linha
<display:column><a href="cd.editar.logic?cd.id=${cd.id}">editar</a></display:column>
a EL está com valor nulo e assim acaba gerando o erro eu ja testei com o codigo passando a id manualmente assim:
<display:column><a href="cd.editar.logic?cd.id=${1}">editar</a></display:column>
e funcionou agora gostaria de saber por que ela não carrega a id se toda logica está correta Está aqui a classe Cd.java que é o modelo e a logic
package br.com.lojavirtual.modelo;


import javax.persistence.*;



@Entity
public class Cd {

	@Id
	@GeneratedValue
	private Long id;
	private String titulo;
	private String artista;
	private String genero;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public String getArtista() {
		return artista;
	}

	public void setArtista(String artista) {
		this.artista = artista;
	}

	public String getGenero() {
		return genero;
	}

	public void setGenero(String genero) {
		this.genero = genero;
	}

}
package br.com.lojavirtual.logic;

import java.util.List;

import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;

import br.com.lojavirtual.dao.DaoFactory;
import br.com.lojavirtual.loja.DaoInterceptor;
import br.com.lojavirtual.modelo.Cd;

@Component
@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 adição

	public void formulario() {

	}

	// formulario para edição
	public void editar(Cd cd) {
		// carrega os dados no banco para edição
		this.cd = this.daofactory.getCdDao().procura(cd.getId());

	}

	// Adiciona um cd novo ou atualiza se for edição
	public void armazena(Cd cd) {
		this.daofactory.beginTransaction();
		this.daofactory.getCdDao().atualiza(cd);
		this.daofactory.commit();
	}

	// Remove 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;
	}

}
Se alguem puder me ajudar fico agradecido , muito obrigado !!!!!

4 Respostas

vinicius_roc

Cara eu estava com um problema semelhante quando eu estava tentando criar um formulario dentro de uma column pegando o id como campo oculto. resolvi da seguinte maneira:

no lugar de ${cd.id} coloca ${cds.id}

deve funcionar pelo menos comigo resolveu assim.

Aproveitando que você esta mechendo com Display Tag queria te fazer uma pergunta.

Você sabe como faço para não exportar uma coluna? no caso essa onde criei o formulario?

Vlw

Andergt6

Agradeço pela sua força Vinicius achei o erro estou seguindo um apostila e no exemplo dado por ela não estava correto uma linha da Displaytag na Jsp <display:table name="${cds}" requestURI="cd.lista.logic"> Estava assim e o correto é assim <display:table id="cd" name="${cds}" requestURI="cd.lista.logic">

Quanto a sua pergunta eu não entendi muito bem será que vc pode me explicar melhor se eu puder te ajudar ficarei feliz.

vinicius_roc

humm… verdade não vi que estava faltando o id. Sorry… É que tambem to sem meu codigo aqui.

Então.

Eu tenho uma tabela onde mostra o dados (nome, ramal, baia…) de todos usuarios, cada dado em sua coluna, e tenho uma ultima coluna onde inseri o formulario para o usuario escolher se quer alterar ou excluir o item.

E nessa tabela eu habilitei a opção de exportar para excel. Só que quando eu mando exportar tambem vem a coluna do formulario, e não queria que ela viesse, queria apenas os dados dos usuarios.

Sabe como fazer isso??

Obrigado

vinicius_roc

AH! HA! Descobri.

É só no column colocar media=“html”, que ai só a pagina JSP vai ver o excel não.

Fica como dica caso você precise :wink:

A referencia é esse link:

http://www.vaannila.com/struts/struts-example/struts-display-tag-example-1.html

Abss

Criado 30 de junho de 2009
Ultima resposta 30 de jun. de 2009
Respostas 4
Participantes 2