Duvida exercico 2(9.9) apostila caelum fj21

4 respostas
F

Fala moçada estou com uma pequena duvida.

2 - Coloque um link na sua lista-contatos-elegante.jsp que abre a página testa-altera-mvc.jsp passando
o Id do contato que você quer alterar. Deixe o campo Id visível no form mas não alterável. Não
esqueça de passar o campo Id pela requisição. Faça com que os campos do form estejam populados com
os dados do contato a ser editado.

Como faço para popular minha pagina tentei deste modo porem sem sucesso
<body>
	<c:import url="cabecalho.jsp" />
		Formulário para alteração de contatos:<br/>
		
		<form action="mvc" method="post">
			Id:
				<input type="text" name="id" value="${param.id}" readonly/><br/>
			Nome:
				<input type="text" name="nome" value="${requestScope.nome}"/><br/>
			E-mail:
				<input type="text" name="email" value="${requestScope.email}"/><br/>
			Endereço:
				<input type="text" name="endereco" value="${requestScope.endereco}"/><br/>
			Data de Nascimento:
				<caelum:campoData id="dataNascimento"/>
				<input type="hidden"
					name="logica" value="AlteraContatoLogic"/>
				<input type="submit" value="Enviar"/>
		</form>
	<c:import url="rodape.jsp"/>
</body>
</html>
public class AlteraContatoLogic implements Logica {

	@Override
	public void executa(HttpServletRequest req, HttpServletResponse res)
			throws Exception {
		Contato contato = new Contato();
		
		long id = Long.parseLong(req.getParameter("id"));
		contato.setId(id);
		contato.setNome(req.getParameter("nome"));
		contato.setEndereco(req.getParameter("endereco"));
		contato.setEmail(req.getParameter("email"));
		
		String dataEmTexto = req.getParameter("dataNascimento");
		Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
		Calendar dataNascimento = Calendar.getInstance();
		dataNascimento.setTime(date);
		
		contato.setDataNascimento(dataNascimento);
		
		ContatoDAO dao = new ContatoDAO();
		dao.altera(contato);
		
		RequestDispatcher rd = req.getRequestDispatcher("/lista-contatos-elegante.jsp");
		rd.forward(req, res);

		System.out.println("Alterando Contato..."+contato.getNome());
		
	}
	
}
Obrigado

4 Respostas

A

Qual é exatamente seu problema?

Como está passando o id?

/testa-altera-mvc.jsp?id=1

Coloca aí tb:

O valor do id é: ${param.id}

F

Na verdade queria saber como popular a minha página de alteração de contato, sem ter que passar por parâmetro os outros dados como nome, email entre outros, parametro eu quero usar só o email e quando entrar na tela os outros campos estarem preenchidos entendeu?
Tentei usar o requestScope porém sem sucesso, sabe como devo fazer isso?
Obrigado

A

Eu resolvi instanciando uma ContatoDAO…
Na ContatoDAO, tem a getLista…
Não consegui filtrar usando uma getLista(long id)…

Aí fiz um serviço porco: <c:forEach var=“contato” items=lista…
E testei pra colocar no value dos inputs apenas o id que eu tinha…

<c:if test={contato.id eq param.id}…
<input type=“text” name=“id” value="${contato.id}…

Se conseguir filtrar posta aí, por favor…

O que eu tinha pensado era com o id buscar um contato com um dao.getContato(long id)… Mas não tive sucesso…

Desculpe a resposta truncada… No cel é meio difícil…

F

Deve ter um jeito mais simples, vi alguns post e alguns conseguiriam utilizando o requestScope, porém não estou conseguindo. Alguem sabe alguma maneira de preencher o form sem usar parametros, se não houver vou utilizar o parametro mesmo
Obrigado

Criado 14 de março de 2013
Ultima resposta 15 de mar. de 2013
Respostas 4
Participantes 2