Quantcast
Channel: GUJ - Tópicos com a tag java
Viewing all articles
Browse latest Browse all 17410

9.11 Apostila Caelum fj-21 - Problema na página de Alterar Contatos

$
0
0

@madv escreveu:

Olá pessoal, estou realizando o exercício opcional da apostila CAELUM-JAVA-WEB FJ21 no exercício 9.11
AlterarContatosLogic.

Tenho todas as páginas criadas e aparentemente funcionando. a página de cadastro funciona perfeitamente.

CLASSE Adiciona Alunos HTML

Cadastro de Alunos

Nome: <input type="text" name="nome" /><br />
Email: <input type="text" name="email" /><br />
Data Nasc: <input type="text" name="datanasc"> <br />
Telefone: <input type="text" name="telefone" /><br />
Endereço: <input type="text" name="endereco" /><br />

<input type="submit" value="Gravar">
<a target="_blank" href="mvc?logica=ListaAlunosLogic">Alunos Cadastrados</a></a>


CLASSE AdicionaAlunosLogic

public class AdicionaAlunosLogic implements Logica{

@Override
public String executa(HttpServletRequest req, HttpServletResponse resp) throws Exception {

	String nome = req.getParameter("nome");
	String email = req.getParameter("email");
	String dataFormatada = req.getParameter("datanasc");
	
	Calendar datanasc = null;
	
	try {
		
		java.util.Date data = new SimpleDateFormat("dd/MM/yyyy").parse(dataFormatada);
		datanasc = Calendar.getInstance();
		datanasc.setTime(data);
		
	} catch (Exception e) {
		
		System.out.println("Impossível formatar a data!");
		
	}
	
	String telefone = req.getParameter("telefone");
	String endereco = req.getParameter("endereco");
	
	Aluno aluno = new Aluno();
	
	aluno.setNome(nome);
	aluno.setEmail(email);
	aluno.setDatanasc(datanasc);
	aluno.setTelefone(telefone);
	aluno.setEndereco(endereco);
	
	AlunoDao alunoDao = new AlunoDao();
	
	alunoDao.adicionaAluno(aluno);
	
	//return "mvc?logica=ListaAlunosLogic";
	return "adicionaAlunos.html";
}

}

CLASSE ListaAlunos jsp

	<!-- percorre contatos montando as linhas da tabela -->

	<tr>
		<th>Nome</th>
		<th>Data Nasc</th>
		<th>Email</th>
		<th>Telefone</th>
		<th>Endereço</th>
		<th>Remover</th>
		<th>Editar</th>
	</tr>

	<c:forEach var="aluno" items="${alunos}">

		<tr>
			<td>${aluno.nome}</td>
			
			<td><fmt:formatDate value="${aluno.datanasc.time}"
					pattern="dd/MM/yyyy" /></td>

			<td>
			<c:if test="${not empty aluno.email}">
					<a href="malito:{alunno.email}"> ${aluno.email} </a>
					
				</c:if> <c:if test="${empty aluno.email}">
				Email não informado!
			</c:if>
			</td>

			<td>${aluno.telefone}</td>
			<td>${aluno.endereco}</td>
			
			<td>
				<a href="mvc?logica=RemoveAlunosLogic&id=${aluno.id}">Remover</a></a>
			</td>
			
			<td>
				<a href="mvc?logica=PaginaAlteraAlunosLogic&id=${aluno.id}">Editar</a></a>
			</td>
			
		</tr>

	</c:forEach>
</table>

<c:import url="/WEB-INF/jsp/rodape.jsp" />


Classe RemoveAlunosLogic

public String executa(HttpServletRequest req, HttpServletResponse res)
throws Exception {

		int id = Integer.parseInt(req.getParameter("id"));

		Aluno aluno = new Aluno();
		aluno.setId(id);

		AlunoDao alunoDao = new AlunoDao();

		alunoDao.removeAluno(aluno);

		System.out.println("Aluno " + aluno.getId() + " " + aluno.getNome() + " Excluído com sucesso!");

			return "mvc?logica=ListaAlunosLogic"	

}

}

Esta tudo funcionando!

O problema é que quero na página de listagem clicar no botão editar de um determinado alunos e ser redirecionado para uma página identica a de adicionar Alunos, já com os dados preenchidos e la realizar a edição e clicar em salvar. Os métodos já estão prontos e funcionando, so não sei como chamar a página de edição através do link.

CLASSE AlteraAlunosLogic

public class AlteraAlunosLogic implements Logica {

@Override
public String executa(HttpServletRequest req, HttpServletResponse resp) throws Exception {

	String nome = req.getParameter("nome");
	String email = req.getParameter("email");
	String dataFormatada = req.getParameter("datanasc");

	Calendar datanasc = null;

	try {

		java.util.Date data = new SimpleDateFormat("dd/MM/yyyy").parse(dataFormatada);
		datanasc = Calendar.getInstance();
		datanasc.setTime(data);

	} catch (Exception e) {

		System.out.println("Impossível formatar a data!");

	}

	String telefone = req.getParameter("telefone");
	String endereco = req.getParameter("endereco");

	Aluno aluno = new Aluno();

	aluno.setNome(nome);
	aluno.setEmail(email);
	aluno.setDatanasc(datanasc);
	aluno.setTelefone(telefone);
	aluno.setEndereco(endereco);

	AlunoDao alunoDao = new AlunoDao();

	alunoDao.alteraAluno(aluno);

	return "mvc?logica=ListaAlunosLogic";
}

}

e a CLASSE AlteraAlunos jsp

Alterar Cadastros

<form action="mvc?logica=AlteraAlunosLogic" method="post">

	<c:forEach var="aluno" items="${alunos}">

Nome: <input type="text" name="novoNome" value="${aluno.nome}" />
		<br />
Email: <input type="text" name="novoEmail" />
		<br />
Data Nasc: <input type="text" name="novaDatanasc">
		<br />
Telefone: <input type="text" name="novoTelefone" />
		<br />
Endereço: <input type="text" name="novoEndereco" />
		<br />

		<input type="submit" value="Alterar">

	</c:forEach>

</form>


NÃO SEI COMO CHAMAR ESSA CLASSE JSP NO LINK DA PÁGINA DE LISTAGENS ANTERIORMENTE MOSTRADA.

criei uma classe apenas para chamar a classe jsp para alterar os dados, mas simplesmente não consigo chama-la pelo link da página de listagem

public class PaginaAlteraAlunosLogic implements Logica{

@Override
public String executa(HttpServletRequest req, HttpServletResponse resp) throws Exception {
	// TODO Auto-generated method stub
	return "/WEB-INF/jsp/alteraAlunos.jsp";
}

}

Trecho da página de listagem

                       <td>
				<a href="mvc?logica=RemoveAlunosLogic&id=${aluno.id}">Remover</a></a>
			</td>
			
			<td>
				<a href="mvc?logica=PaginaAlteraAlunosLogic&id=${aluno.id}">Editar</a></a>
			</td>

POR FAVOR ALGUEM PODE ME DAR UMA LUZ? Onde posso está errando?

Sempre que clico no link para chamar a página de edição, recebo uma página em branco como resultado, mas não retorna nem um erro!

Mensagens: 13

Participantes: 2

Ler tópico completo


Viewing all articles
Browse latest Browse all 17410

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>