Olá pessoal,
estou seguindo a apostila 28 da caelum que monta uma loja virtual… estou passando agora pela parte de cadastro de cds… bom é o seguinte:
conforme ensina a apostila, utilizo o mesmo formulario para cadastro e atualização de cds, qnd escolho um cd para edição a página .jsp carrega o id do cd em um hidden field para que os dados do cd sejam alterados e qnd quero incluir um novo cd utilizo a mesma página porém sem um id carregado… qnd vou alterar os dados de um cd já cadastrado td ocorre perfeitamente, porém qnd vou cadastrar um novo cd não consigo… ele retorna o seguinte:
[color=red]HTTP Status 404 - /loja/cd/armazena.invalid.jsp
type Status report
message /loja/cd/armazena.invalid.jsp
description The requested resource (/loja/cd/armazena.invalid.jsp) is not available.
Apache Tomcat/6.0.14[/color]
mas ainda tem mais… coloquei o campo id como text ao inves de hidden, e qnd vou cadastrar estou inserindo tambem o id… ai funciona! bom estou utilizando a função merge da session em hibernate, vou postar meus codigos aq pra ver se alguem pode me ajudar…
Cd.java
package br.com.asmnet.modelo.lojavirtual;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@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;
}
}
Cdlogic.java
package br.com.asmnet.lojavirtual.logic;
import java.util.List;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;
import br.com.asmnet.dao.DAOFactory;
import br.com.asmnet.lojavirtual.loja.DAOInterceptor;
import br.com.asmnet.modelo.lojavirtual.Cd;
@Component("cd")
@InterceptedBy(DAOInterceptor.class)
public class CdLogic {
@SuppressWarnings("unused")
private final DAOFactory daoFactory;
private Cd cd;
private List<Cd> cds;
public List<Cd> getCds() {
return cds;
}
public CdLogic(DAOFactory daoFactory){
this.daoFactory = daoFactory;
}
public void lista(){
this.cds = this.daoFactory.getCdDAO().listaTudo();
}
public void remove(Cd cd){
this.daoFactory.beginTransaction();
this.daoFactory.getCdDAO().remove(cd);
this.daoFactory.commit();
}
public void armazena(Cd cd){
this.daoFactory.beginTransaction();
this.daoFactory.getCdDAO().atualiza(cd);
this.daoFactory.commit();
}
public void formulario(){
}
public void editar(Cd cd){
this.cd = this.daoFactory.getCdDAO().procura(cd.getId());
}
public Cd getCd() {
return cd;
}
}
DAO.java
package br.com.asmnet.dao;
import java.util.List;
import org.hibernate.Session;
public class DAO<T> {
private final Session session;
@SuppressWarnings("unchecked")
private final Class classe;
@SuppressWarnings("unchecked")
public DAO(Session session, Class classe){
this.session = session;
this.classe = classe;
}
public void adiciona(T u){
this.session.save(u);
}
public void remove(T u){
this.session.delete(u);
this.session.flush();
}
public void atualiza(T u){
this.session.merge(u);
this.session.flush();
}
@SuppressWarnings("unchecked")
public List<T> listaTudo(){
return this.session.createCriteria(this.classe).list();
}
@SuppressWarnings("unchecked")
public T procura(long id){
return (T) session.load(this.classe,id);
}
}
formulario.ok.jsp
<%@page pageEncoding="Cp1252" contentType="text/html; charset=Cp1252" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/>
<title>Cadastro de Cds</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>
<%@ include file="../menu.jsp" %>
<h3>Cadastro de cds</h3>
<form action="cd.armazena.logic" method="post">
<input type="text" name="cd.id" value="${cd.id}" />
Artista: <input type="text" name="cd.artista" value="${cd.artista}"/><br/>
Gênero: <input type="text" name="cd.genero" value="${cd.genero}" /><br/>
Título: <input type="text" name="cd.titulo" value="${cd.titulo}" /><br/>
<input type="submit" />
</form>
</body>
</html>
se alguem puder me ajudar ai… ja procurei isso na net e n achei nada…
valeu galera