Problema Struts (JSTL + request.setAttribute)

7 respostas
V

Boa tarde a todos, estou com uma dúvida a respeito de JTSL, já achei outros tópicos com a mesma pergunta, mas não consegui resolver.

Estou desenvolvendo uma aplicação com o Struts utilizando DispatchAction, utilizo um html onde estão as ações de inserir, listar, remover e alterar. onde a parte de Inserir, listar e remover, estão funciando.

--- listaContato.jsp ------

<form action="Contato.do" method="post">
<input type="hidden" name="parameter" value="add">
Nome <input name="contato.nome" value="" >&nbsp;<input type="submit" value="Enviar">
</form>

<!--  for  -->
<c:forEach var="contato" items="${contatos}">
	<li>${contato.id}, ${contato.nome}  [<a href="Contato.do?parameter=searchId&contato.id=${contato.id}">Alterar</a>] [<a href="Contato.do?parameter=remove&contato.id=${contato.id}">remover</a>]</li>
</c:forEach>

Minha DispatchAction de listar esta setando o arraylist de contatos:

ContatoDAO dao = new ContatoDAO();
		ArrayList<Contato> lista = dao.getLista();

		request.setAttribute("contatos", lista);

Agora minha dúvida é na parte de alterar, para eu alterar eu busco o objeto Contato pelo o Id para mostrar em outra tela e poder altera-lo, como segue abaixo:

Contato contato = contatoForm.getContato();

		Contato cont = dao.getContato(contato.getId());
	
		request.setAttribute("contato", cont);

Porem não consigo pegar o objeto na pagina de editar, ele não aparece nada, é com esse c:out mesmo que eu acesso o metodo do objeto enviado pela requisição?

--- editaContato.jsp ---

<form action="Contato.do" method="post">
<input type="hidden" name="parameter" value="edit">
<input type="hidden" name="contato.id" value="${contato.id}">
Nome <input name="contato.nome" value="<c:out value="${contato.nome}" />" >&nbsp;<input type="submit" value="Enviar">
</form>

Alguem pode me ajudar?/

Obrigado,

7 Respostas

nextuser

struts1?

V

Isso mesmo!

A

Pergunta básica, já verificou se sua consulta com o id vindo da listagem está retornando o objeto? Se o id está sendo inserido realmente no objeto antes de fazer o contato.getId()?

Alberto

V

alots_ssa:
Pergunta básica, já verificou se sua consulta com o id vindo da listagem está retornando o objeto? Se o id está sendo inserido realmente no objeto antes de fazer o contato.getId()?

Alberto

Sim, já fiz essa verificação, esta ok!!

V

Funciando!

Obrigado a atenção, hoje quando cheguei startei o projeto e a página começou a funcionar.

abs

S

Olá amigo, tudo bem???
sei que não é o tópico correto, mas tenho uma duvida em minha aplicação. Tenho uma pagina JSP que lista todos os clientes da minha base de dados. No final de cada linha, existe um Link chamado ALTERAR. A idéia é que ao clicar em ALTERAR abra a tela de cadastro de clientes carregando os dados correspondentes a linha selecionada. Estou usando Struts 2.0 e Hibernate 3.3. Como faço para isso funcionar???
Agradeço a ajuda

S

esse é meu jsp que lista os clientes:

<%@taglib uri="/struts-tags" prefix=“s”%>

Listar clientes
<tbody>
		<tr align="center">
			<td colspan="3" rowspan="1" align="center" bgcolor="black"><font
				color="white">Lista de Clientes</font></td>
		</tr>
		<s:if test="%{cliente.size > 0}">
			<tr>
				<td width="25" align="center">Código</td>
				<td width="50" align="center">Nome</td>
				<td align="center">Telefone</td>
				<td align="center">Linha</td>
				<td align="center">Ação</td>
			</tr>
			<s:url id="alterarCliente" action="alterarCliente">
				<s:param name="id" value="id" />
			</s:url>
			<s:iterator value="cliente">
				<tr>
					<td align="center"><s:property value="id" /></td>
					<td align="center"><s:property value="nome" /></td>
					<td align="center"><s:property value="telefone1" /></td>
					<td align="center"><s:property value="linha" /></td>
					<td align="center"><s:a href="%{alterarCliente}">Alterar</s:a></td>
				</tr>
			</s:iterator>
		</s:if>
		<s:else>
			<tr>
				<td>Nenhuma Cliente encontrado!</td>
			</tr>
		</s:else>
		<tr align="center">
			<td colspan="3" rowspan="1"><a href="./">Voltar</a></td>
		</tr>
	</tbody>
</table>

</s:form>

esse é meu JSP que deveria mostrar os dados do cliente selecionado:

<%@taglib uri="/struts-tags" prefix=“s”%>

Alteracao de Cliente
<td><s:submit name="botao" value="Salvar" /></td>
			<td><a href="index.jsp">Voltar</a></td>
		</tr>
	</tbody>
</table>
<br>

</s:form>

e esse é meu struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<action name="incluirCliente" class="com.agrofior.modelos.Cliente" method="incluir">
		<result name="SUCCESS">/cliente/incluirCliente.jsp</result>
		<result name="ERROR">/cliente/erroCliente.jsp</result>
	</action>
			
	<action name="listarCliente" class="com.agrofior.modelos.Cliente" method="listar">
		<result name="SUCCESS">/cliente/listarCliente.jsp</result>
	</action>
	
			
	<action name="alterarCliente" class="com.agrofior.modelos.Cliente" method="alterar">
		<result name="SUCCESS">/cliente/alterarCliente.jsp</result>
		<result name="ERROR">/cliente/erroCliente.jsp</result>
	</action>

</package>
Alteração de Cliente
Criado 10 de fevereiro de 2009
Ultima resposta 12 de fev. de 2009
Respostas 7
Participantes 4