[RESOLVIDO]Struts - Como passar um parametro por html

4 respostas
ps.vale

Tenho uma página, e nela faz uma busca e retorna tds os resultados da busca na página.
Gostaria de clicar nesse resultado e ir para outra página onde irá listar o resultado detalhado.

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

	<table border="1" onclick="location.href='Detalhes.jsp'">
		<tr>
			<td><strong><span class="rotulo">Nome:</span></strong></td>
			<td><span class="valores">${llista.nome}</span></td>
		</tr>
		<tr>
			<td><strong><span class="rotulo">CPF:</span></strong></td>
			<td><span class="valores">${lista.cpf}</span></td>
		</tr>
		<tr>
			<td><strong><span class="rotulo">Data Nascimento:</span></strong></td>
			<td><span class="valores"><fmt:formatDate	value="${lista.dtnascimento.time}" pattern="dd/MM/yyyy" /></span></td>
      <html:hidden name="lista.id" property="hiddenIndReal" value="${lista.id}"/> 
		</tr>
	</table>
	</br>
   </br>
</c:forEach>
Gostaria que quando o usuario clicasse nessa table, abrisse essa página com todos os dados
<input type="hidden" name="lista.id" value="${lista.id}"/> 
		<table border="1">
	<tr>
		<td><span class="rotulo">Nome:</span></td>
		<td><span class="valores">${lista.nome}</span></td>
	</tr>
<...>

4 Respostas

quikkoo

clicar na tabela? num da pra colocar um link? dai por esse link vc passa o parametro id, ao invés de usar um campo escondido

o hidden tb vai funcionar mas precisará estar dentro de um form, e precisará ter um submit tb, dai vc terá um formulário pra cada elemento da lista, funciona mas acho mais tranquilo vc usar o link mesmo

flw, t+

joel.amalio

ps.vale,
me confirma uma coisa. Cada registro é representado por uma TABLE?

Você possui uma classe que extende Action e nela tem um método que efetua a listagem dessas tabelas, okay?

Você pode criar um método detalhar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) e substituir o link “Detalhes.jsp” por usuario.do?acao=detalhar&id=idDoUsuário

por exemplo:

public class UsuarioAction extends Action {
  public ActionForward listar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
    // código que obtém a coleção
    return mapping.findForward("listar");
  }

  public ActionForward detalhar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
    // código que obtém apenas um objeto para representar na JSP Detalhes.jsp
    return mapping.findForward("detalhar");
  }
}

Você também tem que adicionar as configurações no action-mappings.xml sobre o Action.

&lt;action name="usuarioForm" path="/usuario" validate="false" parameter="acao" scope="request" type="br.com.guj.seuprojeto.UsuarioAction"&gt;
  &lt;forward name="listar" path="/usuario_listar.jsp"/&gt;
  &lt;forward name="detalhar" path="/usuario_detalhar.jsp"/&gt;
&lt;/action&gt;

A ideia é mais ou menos isso. Qualquer dúvida é só perguntar…

Boa sorte,

ps.vale

Oii queridos joel.amalio e quikkoo
Muito obrigada! Consegui resolver meu problema graças as dicas de vocês usei um pouco dos dois. Coloquei um botão que passa o hidden e chama a action detalhar, e deu certinho! Muitooo orbigada mesmo!

joel.amalio

Que bom, ps.vale, fico feliz por ter ajudado.
Estamos todos aqui sempre aprendendo e com a dúvida dos outros podemos crescer mais.
:smiley:

Criado 19 de agosto de 2010
Ultima resposta 20 de ago. de 2010
Respostas 4
Participantes 3