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?
<%EntityManagermanager=HibernateUtil.getManager();Estadoestado=newEstado();intop=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 formularioestado.setNome(request.getParameter("nome"));//esses nomes são do formularioestado.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><ahref="gerenciar_estados.jsp">Inserir</a> <ahref="gerenciar_estados.jsp?id=<%=e.getId()%>">Editar</a> <ahref="gerenciar_estados.jsp?op==1&&id=<%=e.getId()%>">Excluir</a></td>
passa um outro parametro por exemplo operação = excluir/alterar.
uma boa é não usar scriplets.
att,
J
javablue
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.
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
javablue
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
Não cheguei a testar aqui, mas acho que seria isso:
<%EntityManagermanager=HibernateUtil.getManager();Estadoestado=newEstado();intop=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();}...%>
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
javablue
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
javablue
Nada, no que precisar estamos ai.
Só lembre-se de colocar [Resolvido] no título do tópico, pra ajudar o fórum.