Olá…
estou estudando a apostila da caelum para java web…
estou criando um CRUD porém estou tendo um problema…
eu tenho uma listagem dos clientes, e 2 botoes (REMOVER, ALTERAR)
ao clicar em remover ele remove o cliente. Ja o alterar eu não estou conseguindo rodar, eu queria que a pessoa fosse direcionada para a pagina de alteração já com os campos preenchidos do respectivo cliente clicado.
Vejam as classes
minha JSP que exibe os Clientes dos botões:
<p><a >Cadastrar Novo Cliente</a></p>
<p><a >Cadastrar Novo Tipo de Cliente</a></p>
<!-- Cria o DAO -->
<jsp:useBean id="dao" class="br.com.softaex.cliente.ClienteDAO"></jsp:useBean>
<table border=1>
<tr>
<th>ID</th><th>Nome</th> <th>Tipo</th><th>CPF/CNPJ</th><th>RG/IE</th><th>Endereço</th><th>Fone</th><th>Contato</th><th>Alterar</th><th>Remover</th>
</tr>
<!-- Percorre os Clientes -->
<c:forEach var="listCliente" items="${dao.getList()}">
<tr><td>${listCliente.id}</a></td>
<td>${listCliente.nome}</td>
<td>${listCliente.id_tipo}</td>
<td>${listCliente.cpf_cnpj}</td>
<td>${listCliente.rg_ie}</td>
<td>${listCliente.endereco}</td>
<td>${listCliente.fone}</td>
<td>${listCliente.contato}</td>
<td>
<form action="mvc" method="POST">
<input type="submit" name="Remover" value="Remover" />
<input type="hidden" name="delete" value="${listCliente.id}" />
<input type="hidden" name="cliente" value="${listCliente.nome}" />
<input type="hidden" name="logica" value="RemoveClienteLogic" />
</form>
</td>
<td>
<form action="mvc" method="POST">
<input type="submit" name="Alterar" value="Alterar" />
<input type="hidden" name="idcliente" value="${listCliente.id}" />
<input type="hidden" name="logica" value="SelectClienteLogica" />
</form>
</tr>
</c:forEach>
</table>
<hr />
${msg}
o botão Alterar teria que chamar a classe SelectClienteLogica e junto a ela enviar o parametro idcliente
veja a classe:
package br.com.softaex.mvc;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.softaex.cliente.Cliente;
import br.com.softaex.cliente.ClienteDAO;
public class SelectClienteLogica implements Logica {
@Override
public void executa(HttpServletRequest req, HttpServletResponse res)
throws Exception {
long id = Long.parseLong(req.getParameter("idcliente"));
ClienteDAO dao = new ClienteDAO();
Cliente cliente = dao.select(id);
cliente.getId();
RequestDispatcher rd = req.getRequestDispatcher("altera-cliente.jsp");
rd.forward(req, res);
req.setAttribute("id", cliente.getId());
System.out.println("Select Cliente..." + cliente.getNome());
}
}
e agora a jsp altera-cliente:
<jsp:useBean id="cDAO" class="br.com.softaex.cliente.ClienteDAO"></jsp:useBean>
<c:for var="Cliente c" value="cDAO.select(${clienteId}))" />
<b>Formulário para alteração de cliente: </b>
<hr />
ID: <input type="text" name="id" value="${c.id}" /> <br>
Nome: <input type="text" name="nome" value=""/> <br>
<!-- Cria o DAO -->
<jsp:useBean id="dao" class="br.com.softaex.cliente.TipoClienteDAO"></jsp:useBean>
Tipo de Cliente: <select name="id_tipo"\>
<!-- Percorre os Contatos montado no DAO -->
<c:forEach var="tipocliente" items="${dao.getList()}">
<option value="${tipocliente.id}">${tipocliente.tipo} </option>
</c:forEach>
</select><br>
CPF/CNPJ: <input type="text" name="cpf_cnpj" value="" /> <br>
RG/IE: <input type="text" name="rg_ie" value="" /><br>
Endereço: <input type="text" name="endereco" value=""/><br>
Telefone: <input type="text" name="fone" value=""/><br>
Contato: <input type="text" name="contato" value="" /><br>
<input type="hidden" name="logica" value="AlteraClienteLogic" />
<input type="submit" value="Alterar Cliente" />
</form>
o erro que dá ao clicar no Alterar é que falta o parametro 1 do comando sql, no caso a clausula where do meu select…
talvez eu não esteja sabendo passar ela…
alguem poderia dar uma luz?
Lembrando que estou utilizando o padrao MVC…