Dificuldade no Exercício da FJ 21

5 respostas
andrecosta90

Não estou conseguindo fazer este exercício abaixo:

[i]Exercício do Capítulo 9 - MVC

  1. 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.[/i]

    Se alguém puder ajudar aí, agradeço.

5 Respostas

andrecosta90

up

andrecosta90

"….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. "

Estou com dficuldade nesse trecho, se algúem puder dar algumas dicas de como resolver esse exercício.

Obrigado

charlesbraw

A lista de contatos está assim:

nome - email - endereco
nome2 - email2 - endereco2
nome3 - email3 - endereco3

ao clicar em uma das linhas(que representa um registro, uma pessoa) você vá para a página de alteração com o campo id preenchido com a pessoa que você escolheu alterar.
sendo assim você pode fazer isso:

na tabela da lista elegante você cria a seguinte td, antes dessa td - > <td>${contato.nome}</td>

<td><a href="altera-contato.jsp?id=${contato.id}">${contato.id}</a></td>

Sendo assim a lista agora vai ficar da seguinte maneira

id - nome - email - endereco
id2 -nome2 - email2 - endereco2
id3- nome3 - email3 - endereco3
(cada “id” representa o id que está no banco de dados)

seu método getLista() da classe ContatoDAO deve ser mais ou menos assim:

public List<Contato> getLista() {
		try {
			List<Contato> contatos = new ArrayList<Contato>();
			PreparedStatement stmt = this.connection.prepareStatement("Select * from contatos");
			ResultSet rs = stmt.executeQuery();
			
			while(rs.next()) {
				Contato contato = new Contato();
				contato.setId(rs.getLong("id")); //ADICIONE ESSA LINHA AQUI
				contato.setNome(rs.getString("nome"));
				contato.setEmail(rs.getString("email"));
				contato.setEndereco(rs.getString("endereco"));
				
				Calendar data = Calendar.getInstance();
				data.setTime(rs.getDate("dataNascimento"));
				contato.setDataNascimento(data);
				
				contatos.add(contato);			
			}
			
			rs.close();
			stmt.close();
			return contatos;
		} catch(SQLException e) {
			throw new RuntimeException(e);
		}
	}

se o método estiver um pouco diferente não tem problema, o que você precisa é pegar o Id.

agora no arquivo altera-contato.jsp coloque a seguinte linha:

Id: <input type="text" name="id" value="${param.id}" disabled="disabled"/><br/>

ou seja, você vai criar uma lista com de contatos, o id da lista é um link para a página de alteração, a página de alteração tem um campo do tipo text que esta esperando esse id, agora você pode alterar essa pessoa.

obs: não estamos preechendo todos dados no form(que seria o correto e elegante), apenas estamos adquirindo o id para podermos preencher o form e mandar para a alteração.

andrecosta90

Muito obrigado charlesbraw,

resta uma dúvida: teria como eu impedir que o usuário consiga alterar o id lá na URL ?

Obrigado!

Marky.Vasconcelos

Não duplique tópicos, continue sua duvida em http://guj.com.br/posts/list/220991.java

Agora tem dois topicos com a mesma duvida com respostas diferentes.

Vou trancar esse aqui.

Criado 7 de outubro de 2010
Ultima resposta 8 de out. de 2010
Respostas 5
Participantes 3