Caros, criei uma regra de negócio da seguinte maneira: A lista de contatos tem um link para alterar o contato. Este link leva para o ExibeFormAlterarPreechidoLogica que responde com o formulário em html com os dados passados por parametros. Desta forma o usuário veria os dados antes de alterar. Eu não sei como fazer o formulário ir para o **AlteraContatoLogica** onde de fato será feito a alteração. Alguma dica? vejam o meu codigo.
<!DOCTYPE html> **<!-- Exibe a lista com o link para exiber o contato para alteração-->**
<html>
<head>
<meta charset="ISO-8859-1">
<title>Lista JSTL</title>
</head>
<body>
<c:import url="cabecalho.jsp" />
<table>
<!-- percorre contatos montando as linhas da tabela -->
<th>Nome</th>
<th>E-mail</th>
<th>Endereço</th>
<th>Dt Nasc</th>
<c:forEach var="contato" items="${contatos}">
<tr>
<td>${contato.nome}</td>
<td><c:if test="${not empty contato.email}">
<a href="mailto:${contato.email}">${contato.email}</a>
</c:if> <c:if test="${empty contato.email}">
E-mail não informado
</c:if></td>
<td>${contato.endereco}</td>
<td><fmt:formatDate value="${contato.dataNascimento.time}"
pattern="dd/MM/yyyy" /></td>
<td><a href="mvc?logica=RemoveContatoLogica&id=${contato.id}">Remover</a>
<td><a href="mvc?logica=ExibeFormAlterarPreechidoLogica&id=${contato.id}&nome=${contato.nome}
&email=${contato.email}&endereco=${contato.endereco}
&dataNascimento=${contato.dataNascimento.time}">Alterar</a>
</td>
</tr>
</c:forEach>
</table>
<c:import url="rodape.jsp" />
</body>
</html>
public class ExibeFormAlterarPreechidoLogica implements Logica {
public String executa(HttpServletRequest req, HttpServletResponse res) throws Exception {
long id = Long.parseLong(req.getParameter("id"));
Contato contato = new Contato();
contato.setId(Long.parseLong(req.getParameter("id")));
contato.setNome(req.getParameter("nome"));
contato.setEmail(req.getParameter("email"));
contato.setEndereco(req.getParameter("endereco"));
Calendar calendar = Calendar.getInstance();
try {
String data = req.getParameter("dataNascimento");
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
calendar.setTime(sdf.parse(data));
} catch (ParseException e) {
calendar = calendar.getInstance();
}
contato.setDataNascimento(calendar);
req.setAttribute("contato", contato);
System.out.println("Exibindo dados para alteração... contato de id = " + id);
// System.out.println(data);
return "exibeContato.jsp";
}
}
<!DOCTYPE html> <!-- leva pra este formulário-->
<html>
<head>
<meta charset="ISO-8859-1">
<title>Alterar JSTL</title>
</head>
<body>
<c:import url="cabecalho.jsp" />
<h1>Alterar Contatos</h1>
<hr />
<form action="mvc?logica=AlteraContatoLogica">
<table>
<tr>
<td><h2>Id:${contato.id}</h2></td>
</tr>
<tr>
<td>Nome:</td>
<td><input type="text" name="nome" value="${contato.nome}" />
</td>
</tr>
<tr>
<td>E-mail:</td>
<td><input type="text" name="email" value="${contato.email}" />
</td>
</tr>
<tr>
<td>Endereço:</td>
<td><input type="text" name="endereco"
value="${contato.endereco}" /></td>
</tr>
<tr>
<td>Data Nascimento:</td>
<!-- <td><caelum:campoData id="dataNascimento" /></td> -->
<td><input type="text" name="dataNascimento"
value="<fmt:formatDate value="${contato.dataNascimento.time}"
pattern="dd/MM/yyyy" />"></td>
</tr>
</table>
<input type="submit" value="Gravar" />
</form>
<c:import url="rodape.jsp" />
</body>
</html>
public class AlteraContatoLogica implements Logica {
public String executa(HttpServletRequest req, HttpServletResponse res) throws Exception {
long id = Long.parseLong(req.getParameter("id"));
Contato contato = new Contato();
contato.setId(id);
contato.setNome(req.getParameter("nome"));
contato.setEmail(req.getParameter("email"));
contato.setEndereco(req.getParameter("endereco"));
//contato.setDataNascimento(req.getParameter("DataNascimento"));
ContatoDao dao = new ContatoDao();
dao.altera(contato);
System.out.println("Alterado contato... ");
req.setAttribute("contato", contato);
return "exibeContato.jsp";
}
