Boa tarde,
Estou com um pequeno problema na minha aplicação web e gostaria que alguem me ajudasse a resolve-lo.
Meu problema é o seguinte: tenho uma página jsp fornecedor, que lista todos os fornecedores cadastrados no meu banco de dados.
No nome de cada fornecedor, existe um link para que eu possa visualizar as contas deste fornecedor.
Na pagina contas do fornecedor, posso cadastrar novas contas, alterar as que já existem ou remover contas.
Até que para cadastrar está tudo indo bem. Meu problema está no momento de alterar uma conta.
Quando peço para alterar, ele pede os dados a serem alterados, porém dá um erro, pois diz não poder alterar com fornecedor = 0, ou seja, ele não consegue ler o fornecedor daquela conta para fazer a alteração.
estou utilizando hibernate para gerar as tabelas e o action e form do struts como regras de negócio, além do jsp para a criação das páginas web.
espero que alguém possa me ajudar.
página lista contas
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body bgcolor="#C0FFFF">
<center><b>Projeto de Gerenciamento de Contas a Pagar/Fornecedor</b></center><p>
<center><b>Contas a Pagar</b></center>
<a href="nova-contapagar.jsp?fornecedor.id=${param['fornecedor.id']}">Cadastrar Conta</a>
<br>
<table align="center" width="60%">
<tr>
<td><b>Descrição</b></td>
<td width="15%"><b>Valor</b></td>
<td width="15%"><b>Pago</b></td>
<td width="20%"><b>Data</b></td>
<td width="12%"> </td>
<td width="12%"> </td>
</tr>
<c:forEach var="contaPagar" items="${contaspagar}">
<tr>
<td> ${contaPagar.descricao}</td>
<td width="15%"> ${contaPagar.valor}</td>
<td width="15%"> ${contaPagar.pago}</td>
<td width="20%"> <fmt:formatDate value="${contaPagar.data.time}" type="date" pattern="dd/MM/yyyy"/></td>
<td width="12%"> <a href="mostraconta.do?contaPagar.id=${contaPagar.id}">Alterar</a></td>
<td width="12%"> <a href="removeconta.do?contaPagar.id=${contaPagar.id}">Remover</a></td>
</tr>
</c:forEach>
</table>
<br>
<p align="right">
<a href="/proj-web-cpmbraxis/lista-fornecedor.do">Ir para Fornecedores</a>
</p>
</body>
</html>
mostracontaaction
package br.com.action;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionRedirect;
import org.hibernate.Session;
import br.com.cpmbraxis.dao.Dao;
import br.com.cpmbraxis.form.ContaPagarForm;
import br.com.cpmbraxis.modelo.ContaPagar;
import br.com.cpmbraxis.util.HibernateUtil;
public class MostraContaPagarAction extends Action{
public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest req, HttpServletResponse res)
throws Exception{
Session session = HibernateUtil.currentSession();
ContaPagar contaPagar = ((ContaPagarForm) form).getContaPagar();
ContaPagar encontrado = new Dao<ContaPagar>(session,ContaPagar.class).procurar(contaPagar.getId());
req.setAttribute("contaPagar", encontrado);
ActionRedirect redirect = new ActionRedirect(map.findForwardConfig("ok"));
redirect.addParameter("fornecedor.id",contaPagar.getFornecedor().getId());
return redirect;
}
}
alteracontaaction
package br.com.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionRedirect;
import org.hibernate.Session;
import org.hibernate.Transaction;
import br.com.cpmbraxis.dao.Dao;
import br.com.cpmbraxis.form.ContaPagarForm;
import br.com.cpmbraxis.modelo.ContaPagar;
import br.com.cpmbraxis.util.HibernateUtil;
public class AlteraContaPagarAction extends Action{
public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest req, HttpServletResponse res)
throws Exception{
Session session = HibernateUtil.currentSession();
Transaction t = session.beginTransaction();
ContaPagar cp = ((ContaPagarForm) form).getContaPagar();
Dao<ContaPagar> dao = new Dao<ContaPagar>(session,ContaPagar.class);
dao.alterar(cp);
t.commit();
System.out.println(">>>"+cp.getId());
ActionRedirect redirect = new ActionRedirect(map.findForward("ok"));
redirect.addParameter("fornecedor.id",cp.getFornecedor().getId());
return redirect;
}
}