[Resolvido]Hibernate e JSP

11 respostas
ArianeRebellato

Boa tarde!!
Estou começando a usar hibernate e jsp…não tenho muita prática e estou com uma dúvida super simples…tenho uma aplicação que incluir, altera e exclui informações do banco de dados…o que está acontecendo é que o meu excluir está se comportando como o alterar pq os dois pegam como parâmetro o id…como posso ajustar para que isso não aconteça?

<%
    EntityManager manager = HibernateUtil.getManager();
    Estado estado = new Estado();
    int op = 0;
    if (request.getParameter("id") != null) {
        estado = manager.find(Estado.class, Integer.parseInt(request.getParameter("id")));
    }

    if (request.getMethod().equals("POST")) {// se o cara clicou no botão salvar  do formulario
        estado.setNome(request.getParameter("nome"));//esses nomes são do formulario
        estado.setSigla(request.getParameter("sigla"));

        manager.getTransaction().begin();
        manager.persist(estado);
        manager.getTransaction().commit();
    }

    if (request.getParameter("id") != null && op == 1) {
        estado = manager.find(Estado.class, Integer.parseInt(request.getParameter("id")));
        manager.getTransaction().begin();
        manager.remove(estado);
        manager.getTransaction().commit();

    }





%>


........



<td>                 <a href="gerenciar_estados.jsp">Inserir</a>&nbsp;&nbsp;
                        <a href="gerenciar_estados.jsp?id=<%=e.getId()%>">Editar</a> &nbsp;&nbsp;
                        <a href="gerenciar_estados.jsp?op==1&&id=<%=e.getId()%>">Excluir </a>
</td>

Obrigada!

11 Respostas

pedruhenrik

passa um outro parametro por exemplo operação = excluir/alterar.

uma boa é não usar scriplets.

att,

J

Quando você clica no excluir, você passa a variável op valendo 1. Mas dentro do jsp você não faz o request.getParameter(“op”); por consequência não tem o valor lá. E o seu if não funciona.

Mas como o nosso amigo pedruhenrik disse, não use scriplets. Isso polui o JSP, além de ser má prática de programação. :smiley:

ArianeRebellato

Usar scriplets não é uma boa então? Eu estou aprendendo na faculdade…o professor nos passou assim…qual seria a melhor maneira?

J

Se ele passou, algum motivo deve ter. Nem que seja a como ensinar a não programar. rs

Isso que você faz com scriptlets normalmente faz parte da regra de negócio. O certo seria, passar os parâmetros através de um servlet e o servlet jogar a responsabilidade da decisão para uma classe de negócios sua.

Isso que eu expliquei é o chamado MVC

Model: Suas classes de Negócio
Controller: Servlet
View: JSP

Segue link básico http://pt.wikipedia.org/wiki/MVC no google tem muito material sobre isso.

Mas se teu professor, pediu para usar scriptlets, faz o que eu te falei. Falta pegar aquela variável op que você tem. Que por enquanto ela vale 0

ArianeRebellato

É…a gente tá bem no início do conteúdo…esta foi a primeira atividade…

Eu fiz o que tu sugeriu, mas devo tar fazendo errado ainda, pois não funciona…o excluir ainda se comporta como o editar… :oops:

if (request.getParameter("id") != null && request.getParameter(op) != null) { 
        estado = manager.find(Estado.class, request.getParameter(op)); 
        estado = manager.find(Estado.class, Integer.parseInt(request.getParameter("id")));
       
        manager.getTransaction().begin();
        manager.remove(estado);
        manager.getTransaction().commit();

    }
J

Não cheguei a testar aqui, mas acho que seria isso:

&lt;%  
        EntityManager manager = HibernateUtil.getManager();  
        Estado estado = new Estado();  
        int op = 0;  
		if (request.getParameter("op") != null ){
		    op = Integer.parseInt(request.getParameter("op"));
		}
        if (request.getParameter("id") != null) {  
            estado = manager.find(Estado.class, Integer.parseInt(request.getParameter("id")));  
        }  
      
        if (request.getMethod().equals("POST")) {// se o cara clicou no botão salvar  do formulario  
            estado.setNome(request.getParameter("nome"));//esses nomes são do formulario  
            estado.setSigla(request.getParameter("sigla"));  
      
            manager.getTransaction().begin();  
            manager.persist(estado);  
            manager.getTransaction().commit();  
        }  
      
        if (request.getParameter("id") != null && op == 1) {  
            estado = manager.find(Estado.class, Integer.parseInt(request.getParameter("id")));  
            manager.getTransaction().begin();  
            manager.remove(estado);  
            manager.getTransaction().commit();  
      
        }  
      
      
      ...
     
      
    %&gt;
ArianeRebellato

infelizmente não deu…

ArianeRebellato

aaahh…espera! deu…eu tinha esquecido de trocar o parâmetro…eheheeh…em que parte do excluir ele carrega nas caixas de texto o que é pra ser editado? o excluir exclui da lista mas fica aparecendo nas caixinhas usadas pelo editar e incluir…e se eu tento salvar denvo da erro…

J

Ai eu já não sei, com o pedaço que você postou do código, não dá pra descobrir. Rs

Mas pelo que você fala, está faltando atualizar a sua lista de Objetos (no seu caso o Objeto Estado) para mostrar o que foi inserido e/ou excluído

ArianeRebellato

ehehheh…obrigada, tá?? Valeu mesmo pela atenção…abraços

J

Nada, no que precisar estamos ai.

Só lembre-se de colocar [Resolvido] no título do tópico, pra ajudar o fórum. :smiley:

Criado 28 de maio de 2011
Ultima resposta 30 de mai. de 2011
Respostas 11
Participantes 3