Dúvida JSP Apostila fj21

3 respostas
B

Bom, tou fazendo a apostila da fj21 da Caelum e chegou em uma parte em que fala para colocar um link na tabela para poder alterar e tudo mais e passar o id por ela. Bom criei uma nova servlet e passo no link ela primeiro para popular e outra servlet pra poder pegar os dados e finalizar, enfim minha duvida é, ali onde passo o caminho da servlet no link teria como eu esconder a url que fica ali em cima e ficar só o /altera-contato.jsp sem o nome da servlet e o id que tá indo?

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<%@ page import="java.util.*,agenda.dao.*, agenda.modelo.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>


<!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>
	<c:import url="cabecalho.jsp"/>
	<jsp:useBean id="dao" class="agenda.dao.ContatoDAO" />
	
	<table border="1">
		<tr>
			<th>Nome</th>
			<th>Email</th>
			<th>Endereço</th>
			<th>Data</th>
		</tr>
		<c:forEach var="contato" items="${dao.lista}">
			<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 }">
				Email 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=AlteraContatoLinkLogica&id=${contato.id}">Alterar Contato</a></td>
			</tr>
		</c:forEach>
		
	</table>
	<c:import url="rodape.jsp"></c:import>
</body>
</html>

3 Respostas

al.barbosa

brabuh,

Eu dei uma olhada na apostila.

Pelo que entendi, você quer saber por que não passar a página altera-contato.jsp diretor no link. Por que tem que passar um link para um servlet com parâmetros?

Se você chamar a página altera-contato.jsp direto no link, como essa página vai obter uma referência para o contato selecionado na lista?

Pelo que eu entendi na apostila, no link é colocada a url mvc e alguns parâmetros. A url mvc está direcionada para o servlet ControllerServlet (no web.xml). Esse servlet recebe um parâmetro chamado logica, contendo o nome da classe que contém a lógica a ser executada. Recebe também o parâmetro id.

A classe que contém a lógica se chama AlteraContatoLinkLogica. No método execute() essa classe irá obter o objeto Contato utilizando o id recebido. Irá direcionar para a página altera-contato.jsp, passando o objeto Contato como atributo.

Só achei um pouco estranho o nome AlteraContatoLinkLogica. Estou entendendo que essa classe irá obter o contato selecionado na lista e direcionar para a página altera-contato.jsp. Ou seja, ela ainda não vai alterar, só vai preparar a tela onde será feita a alteração.
Então acho que a classe que você chama de AlteraContatoLinkLogica poderia se chamar IniciaAlteracaoLogica, pois ela na verdade só inicia a alteração.

B

A url quando dou o alterar fica assim /mvc?logica=AlteraContatoLinkLogica&id=1 que é usada pra passar o id pra poder procurar no banco e retornar os dados e tudo mais o que eu queria era esconder isso, entendeu?

al.barbosa

Entendi. Não sei outra forma de passar os parâmetros.

Criado 8 de julho de 2012
Ultima resposta 9 de jul. de 2012
Respostas 3
Participantes 2