Displaytag enviar parâmetro para formulário

6 respostas
R

Bom dia Senhoras e Sendores,

Tenho uma página listando os dados do meu banco de dados através da taglib Displaytag, preciso pegar os dados de uma linha e envia-los para um formulário o qual é responsável pela alteração dos dados, estou completando o 4o dia e totalizando prováveis 20h nesta tarefa. Para complicar um pouco mais (ou não), a página que é responsável pela alteração é incorporada à página da lista através de ajax, então segue os códigos:

[color=darkred] lista-contatos.jsp [/color]

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://displaytag.sf.net" prefix="display"%>

<%@ page contentType="text/html; charset=utf-8" language="java"%>

<jsp:include page="inc/header.jsp" flush="true" />
<jsp:directive.page import="org.displaytag.sample.*" />
<jsp:useBean id="dao" class="br.com.agenda.dao.ContatosDAO" />

<html>
<head>
<script language="javascript" src="js/ajax.js"></script>
<script language="javascript" src="js/instrucao.js"></script>
<link rel="stylesheet" href="css/displaytag.css" type="text/css"/> 

<title>Agenda online</title>
</head>
<body>

<% //Pog para setar o atributo que será usado pela displaytag
	request.setAttribute("contatos", dao.getLista());
%>
<display:table name="contatos" class="displaytag.css" defaultsort="1" >
	<display:column property="id" title="ID" />
	
	<%
	java.lang.System.out.println();
	%>
		
	<display:column property="nome" title="Nome" sortable="true" />
	<display:column property="email" title="E-mail" />
	<display:column property="telRes" title="Tel. Residêncial" />
	<display:column property="telCom" title="Tel. Comercial" />
	<display:column property="telCel" title="Celular" />
	<display:column property="endereco" title="Endereço" />
	<display:column property="dataNascimento.time"
		title="Data de Nascimento" format="{0,date,dd/MM/yyyy}" />
	
	<display:column>
		&lt;div id="menu"&gt;<a  >Alterar</a>&lt;/div&gt;
	&lt;/display:column&gt;
	
	&lt;display:column&gt;
		<a >Remove</a>
	&lt;/display:column&gt;
	&lt;display:column&gt;
	&lt;/display:column&gt;
&lt;/display:table&gt;

&lt;form action="adiciona-contato.jsp"&gt;&lt;input type="submit"
	value="Adicionar" /&gt; &lt;input type="hidden"
	value="mvc?logica=AdicionaContatoLogic" /&gt;&lt;/form&gt;



<br><br>
&lt;div id="conteudo_mostrar"&gt;&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;

[color=darkred] altera-contatos.jsp [/color]

&lt;form action="mvc?logica=AlteraContatoLogic"&gt;
&lt;table width="331" border="1"&gt;
  &lt;tr&gt;
    &lt;td width="149"&gt;&nbsp;&lt;/td&gt;
    &lt;td width="57"&gt;Atual&lt;/td&gt;
    &lt;td width="103"&gt;Novo&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Nome:&lt;/td&gt;
    &lt;td&gt;&nbsp;&lt;/td&gt;
    &lt;td&gt;&lt;input name="nome" type="text" size="50" maxlength="50" /&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;E-mail:&lt;/td&gt;
    &lt;td&gt;&nbsp;&lt;/td&gt;
    &lt;td&gt;&lt;input name="email" type="text" id="email" size="50" maxlength="50" /&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Tel. Res.:&lt;/td&gt;
    &lt;td&gt;&nbsp;&lt;/td&gt;
    &lt;td&gt;&lt;input name="telRes" type="text" id="telRes" size="10" maxlength="10" /&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Tel. Com.:&lt;/td&gt;
    &lt;td&gt;&nbsp;&lt;/td&gt;
    &lt;td&gt;&lt;input name="telCom" type="text" id="telCom" size="10" maxlength="10" /&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Tel. Cel.:&lt;/td&gt;
    &lt;td&gt;&nbsp;&lt;/td&gt;
    &lt;td&gt;&lt;input name="telCel" type="text" id="telCel" size="10" maxlength="10" /&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Endereço:&lt;/td&gt;
    &lt;td&gt;&nbsp;&lt;/td&gt;
    &lt;td&gt;&lt;input name="endereco" type="text" id="endereco" size="50" maxlength="50" /&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;Data de nascimento:&lt;/td&gt;
    &lt;td&gt;&nbsp;&lt;/td&gt;
    &lt;td&gt;&lt;input name="dataNascimento" type="text" id="dataNascimento" size="10" maxlength="10" /&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;

&lt;input type="hidden" name="id" value="xxxxx" /&gt;

&lt;/form&gt;

[color=darkred] instrucao.js [/color]

function abrirPag(valor){
var url = valor;

xmlRequest.onreadystatechange = mudancaEstado;
xmlRequest.open("GET",url,true);
xmlRequest.send(null);

if (xmlRequest.readyState == 1) {
document.getElementById("conteudo_mostrar").innerHTML = "<img >";
}

return url;
}

function mudancaEstado(){
if (xmlRequest.readyState == 4){
document.getElementById("conteudo_mostrar").innerHTML = xmlRequest.responseText;
}
}

Se você puder colaborar com código pronto, código pela metade, uma idéia, um link, uma apostila, uma moedinha de 5 centavos, eu agradeço, se não puder ajudar, agradeço da mesma forma. Caso a idéia do ajax atrapalhe muito nesta tarefa, não tem problema se o formulário de alteração esteja em outra página jsp

[color=orange]Imagens: [/color]

6 Respostas

Hebert_Coelho

Você está colocando seu form, apenas no botão…

<form action="adiciona-contato.jsp"><input type="submit" value="Adicionar" /> <input type="hidden" value="mvc?logica=AdicionaContatoLogic" /></form>

Adiciona por linha inteira assim todo mundo irá quando você clicar no botão.

R

Haha você me ajudando novamente :stuck_out_tongue:
então, na verdade o “adiciona” está ok, vai para uma página que tem um formulário em branco para adicionar,
o problema está em enviar uma linha da displaytag para o form do altera-contatos.jsp

ID nome telefone alterar
1 nome1 telefone1 alterar
2 nome2 telefone2 alterar
3 nome3 telefone3 alterar

de forma que ao clicar em no 3o item alterar, ele vai enviar para o altera-contatos.jsp os parametros id=1&nome=nome3&telefone=telefone3
tendeu?

Hebert_Coelho

É nóis truta.

Coloca um form por linha. Mostrei o adiciona pq é o unico lugar que eu vi um form.

Cada linha ficaria com um form, assim ao clicar a linha teria seu valor enviado.

R

Primeiramente tentei assim:

&lt;display:column property="email" title="E-mail" &gt;&lt;form action="mv?logica=AlteraContatoLogic" method="get"&gt;&lt;/display:column&gt;

&lt;form action="mv?logica=AlteraContatoLogic" method="get"&gt;	
	&lt;display:column property="nome" title="Nome" sortable="true" /&gt;
	&lt;display:column property="email" title="E-mail" &gt;teste&lt;/display:column&gt;
	&lt;display:column property="telRes" title="Tel. Residêncial" /&gt;
	&lt;display:column property="telCom" title="Tel. Comercial" /&gt;
	&lt;display:column property="telCel" title="Celular" /&gt;
	&lt;display:column property="endereco" title="Endereço" /&gt;
	&lt;display:column property="dataNascimento.time"
		title="Data de Nascimento" format="{0,date,dd/MM/yyyy}" /&gt;
	&lt;display:column&gt;
		&lt;div id="menu"&gt;<a  >Alterar</a>&lt;/div&gt;
	&lt;/display:column&gt;
	
	&lt;display:column&gt;
		<a >Remove</a>
	&lt;/display:column&gt;
	&lt;display:column&gt;
	&lt;/display:column&gt;
&lt;/display:table&gt;

&lt;/form&gt;

Não funcionou destas formas, e nem entendo como funcionaria como o form saberia os parametros a serem enviados.
Olha cara, to perdido mesmo sou razoavelmente iniciante.

Hebert_Coelho

Tranquilo.

Não sei como funciona essa tag aí.

Sei que se vc tem

Linha1 valorA valorA valorA valorA valorA
Linha2 valorB valorB valorB valorB valorB

Você teria que ter:

Linha1 valorA valorA valorA valorA valorA Linha2 valorB valorB valorB valorB valorB

Ou então você faz por javascript. Fica a sua escolha.

R

é… por javascript ja vi uns caras fazendo, mas desta forma que tu disse creio eu que não seja possivel porque isso aqui:

<display:column property=“telCom” title=“Tel. Comercial” />

cria uma coluna, então se eu colocar

<form><display:column property=“telCom” title=“Tel. Comercial” /></form>

ele teoricamente criaria um form na coluna, nao dos dados dalinha, estou começando a pensar que o displaytag não foi feito pra isso.

Criado 24 de novembro de 2011
Ultima resposta 24 de nov. de 2011
Respostas 6
Participantes 2