bom dia galera …
estou estudando a aposlita de web com vraptor…
e queria saber exatamente(pois não consegui entender)…o que exatamente tem que ter no header.jspf, pq?e onde eu coloco ele?
Obrigada! :shock:
bom dia galera …
estou estudando a aposlita de web com vraptor…
e queria saber exatamente(pois não consegui entender)…o que exatamente tem que ter no header.jspf, pq?e onde eu coloco ele?
Obrigada! :shock:
Ele é um pedaço de um arquivo jsp
vc coloca ele na sua pasta junto com os demais arquivos jsp
ah tah entendi…
vc saberia me informar o motivo desse erro;
Caused by: java.lang.IllegalArgumentException: id to load is required for loading
at org.hibernate.event.LoadEvent.(LoadEvent.java:74)
:?:
obrigada
Você está tentando fazer load de um objeto passando o ID como nulo. Sempre que você tenta carregar um objeto você precisa passar o ID do mesmo, e esse ID não pode ser nulo.
junto com a apostila do VRaptor vem um zip chamado goodbuy-auxiliar, nele vc acha o header.jspf e o footer.jsp que vc tem que colocar na pasta WebContent
então lucas eu coloquei o header.jspf e o footer.jsp…o footer esta assim:
[b]
</div>
não esta faltando algo?..então na apostila na web ja teria que esta assim:
mas o meu esta assim:
ah reparei que no meu jsp(lista.jsp)
<c:forEach items="${produtoList}" var=“produto”>
<tr>
<td>${produto.nome}</td>
<td>${produto.descricao}</td>
<td>${produto.preco}</td>
<td><a>Editar</a></td>
<td><a>Remover</a></td>
</tr>
</c:forEach>
se eu tirar o ${produto.id} e colocar,por exemplo, o nº 1 e clicar em editar ele vai para a tela e consigo fazer a alteração…
na web eu não consigo ver a alteração,pq esta tudo em branco só aprece o editar e remover mas no sql a alteração foi feita.
como está o seu método lista do produtosController?
Lucas esta assim:
<a class="mention" href="/u/resource">@Resource</a>
public class ProdutosController {
private final ProdutoDao dao;
private final Result result;
public ProdutosController(ProdutoDao dao, Result result){
this.dao=dao;
this.result=result;
}
public void adiciona(Produto produto){
dao.salva(produto);
result.redirectTo(ProdutosController.class).lista();
}
public void formulario(){
}
public List lista(){
return dao.listaTudo();
}
public Produto edita(Long id){
return dao.carrega(id);
}
public void altera(Produto produto){
dao.atualiza(produto);
result.redirectTo(ProdutosController.class).lista();
}
public void remove(Long id){
Produto produto=dao.carrega(id);
dao.remove(produto);
result.redirectTo(ProdutosController.class).lista();
}
dá uma olhada se seu dao.listaTudo() está retornando objetos Produto populados… se não estiver não vai funcionar a parte do jsp
Desculpa Lucas mas não consegui entender…
o meu produto dao esta assim:ProdutoDao
{…}
public List listaTudo(){
return this.session.createCriteria(Produto.class).list();
}
{…}
não consegui entender que erro vc está tendo Lita!
assim…eu tenho um fomulario onde preencho com nome,descrição,preço qdo clico e enviar ele vai para outra tela que é o meu jsp: lista.jsp
esse jsp esta vindo assim:
Nome Descrição Preço
xxxx xxxxxxx xxx Editar Remover
onde esta o xxxx…era para vim com os dados que eu tinha preenchido- só que esta em branco.
e se eu tentar apertar o editar-por exemplo- aparece o erro:
java.lang.IllegalArgumentException: id to load is required for loading
entendeu?!
entendi, posta o código da sua lista.jsp e do deu DAO.
@Component
public class ProdutoDao {
private final Session session;
public ProdutoDao(){
this.session=CriadorDeSession.getSession();
}
public List listaTudo(){
return this.session.createCriteria(Produto.class).list();
}
public void salva(Produto produto) {
Transaction tx= session.beginTransaction();
session.save(produto);
tx.commit();
}
public void remove(Produto produto){
Transaction tx=session.beginTransaction();
this.session.delete(produto);
tx.commit();
}
public Produto carrega(Long id){
return (Produto) this.session.load(Produto.class, id);
}
public void atualiza(Produto produto){
Transaction tx= session.beginTransaction();
this.session.update(produto);
tx.commit();
}}
lista.jsp
| Descrição | Nome | Preço | ||
|---|---|---|---|---|
| ${produto.nome} | ${produto.descricao} | ${produto.preco} | Editar | Remover |
Acho melhor vc fazer um debug,
o hibernate não deve estar trazendo os dados do banco na sua lista
qdo vc tenta carregar a página dá algum erro no log do servidor?
Acho melhor vc fazer um debug,o hibernate não deve estar trazendo os dados do banco na sua lista
qdo vc tenta carregar a página dá algum erro no log do servidor?
é o que tah parecendo mesmo Lita!
Seu código tah certo!
oh eu reinicio o tomcat e vou na url e digito a página que eu quero
a única coisa que aparece no console do eclipse é:
Hibernate:
select
this_.id as id0_0_,
this_.Descricao as Descricao0_0_,
this_.nome as nome0_0_,
this_.preco as preco0_0_
from
Produto this_
:?:
Lita só mais uma dúvida...
vc colocou a taglib no cabeçalho da página lista.jsp?
assim:<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link href="<c:url value="/css/estilos.css"/>" rel="stylesheet" type="text/css" />
<title>Lista de Produtos</title>
</head>
haaaa... e o seu id está com o @Id lá na sua classe produtos?
então lita… tenta debugar ou imprimir o que o dao.listaTudo tá retornando…
faz algo do tipo:
public List<Produto> lista(){
List<Produto> produtos = dao.listaTudo()
System.out.println(produtos);
return produtos;
}
ve o que aparece no console do servidor…
o que pode estar acontecendo também é que os seus jsps estão com expression language desabilitados…
O hibernate não deixa usar uma entidade que não possua chave primária
tbm pensei na tag, mas acho q EL não se enquadra no JSTL
o jeito é criar um teste com o JUnit ou usar debug pra ver se a lista está sendo preenchida
galera muito obrigada…
Ramon era isso mesmo que estava faltando para dá certo…
agora funciona normalmente…
só não entendi muito bem o pq que é necessário utilizar o:
<%@page contentType=“text/html” pageEncoding=“UTF-8”%>
<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>
vc saberia me explicar exatamente o motivo desse?
galera muito obrigada..... Ramon era isso mesmo que estava faltando para dá certo....Olha só... Quando vc tem algo na sua página usando oagora funciona normalmente.....
só não entendi muito bem o pq que é necessário utilizar o:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
"http://www.w3.org/TR/html4/loose.dtd">
" rel="stylesheet" type="text/css" />
Lista de Produtos
vc saberia me explicar exatamente o motivo desse?
<c:forEach items="${errors}" var="error">
<li>${error.category } - ${error.message }</li>
</c:forEach>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link href="<c:url value="/css/estilos.css"/>" rel="stylesheet" type="text/css" />
<title>Lista de Produtos</title>
</head>
isso foi só pra te mostrar onde fica a taglib...
aki tem um pouco mais sobre as taglib's
na apostila da caelum fj-21 se não me engano
e nesse site tbm:
taglib
ah tah …agora eu entendi Ramon…hehe
realmenet eu tinha colocado aquele codigo todo…mas agora ficou claro…
obrigada!!!
bjus
ah tah …agora eu entendi Ramon…hehe
realmenet eu tinha colocado aquele codigo todo…mas agora ficou claro…obrigada!!!
bjus
não esquece de editar o post e colocar [RESOLVIDO]
blz?
bjos t+
certo vou fazer isso agora…
xau
Pessoal, sei o que o tópico está [Resolvido], mas não entendi muito bem o funcionamento do header e do footer.
Seguindo os exercícios da apostila fj-28, o arquivo que fará todos os jsps “puxarem” o header e o footer é web.xml??
<jsp-config>
<jsp-property-group>
<description>goodbuy</description>
<display-name>Good Buy</display-name>
<url-pattern>*.jsp</url-pattern>
<include-prelude>/header.jspf</include-prelude>
<include-coda>/footer.jspf</include-coda>
</jsp-property-group>
</jsp-config>
Apenas com essa configuração todos os demais arquivos jsp que possuo farão o include do header e do footer?
Os arquivos [header.jspf e footer.jspf] devem ficar na raiz da pasta WebContent?
E no caso as taglibs, eu necessito declarar em cada jsp que eu for utilizar ou declaro todas no header.jspf?
vlw…
sim
Sim, só fazendo isso todos os jsps ficam com esse header e footer.
do jeito que foi declarado, sim.
Se eu não me engano, colocando no header.jspf já funciona
Opa… excelente explicação… muito clara…
Mas, pergunto eu:
O exemplo em que o header.jspf contenha o menu principal do site, todas as páginas o incluirão.
Como ficaria a parte administrativa do site que possuirá um menu “diferente”, com mais opções?
Ou caso o menu seja diferente para determinados usuários, há como “sobrescrevê-lo”, para que determinado jsp não puxe o menu “padrão”?
Ou mesmo se houver, digamos, 3 tipos de header, 1 padrão, 1 para usuários logados e 1 outro para a área administrativa. Há como fazer essa distinção de qual deles um determinado jsp puxará?
Vlw…
só usando jsp dá pra fazer padrões de url… tipo tudo que começa com /admin passa pelo header admin, etc…
outra solução seria ficar fazendo ifs no header.jspf pra saber qual parte mostrar
ou ainda se for totalmente diferente vc pode usar frameworks como o sitemesh ou o tiles
bom dia galera …
estou estudando a aposlita de web com vraptor…e queria saber exatamente(pois não consegui entender)…o que exatamente tem que ter no header.jspf, pq?e onde eu coloco ele?
Obrigada! :shock:
Vou fácil!