Ajax sem reescrita de html

1 resposta
alessandro.a.r

Imagine que tenho uma tela de manutenção de estudante que liste algumas informações do estudante, junto com os telefones e e-mails dele. Agora imagine que não quero que os fones e e-mails carregem quando o usuário entre nesta tela. O que eu quero é mostrar um botão de [+] que, ao ser clicado, busque os telefones do banco e mostre-os em tela. o mesmo para os e-mails.

se eu criar um EstudanteManager.java usando DWR, criarei um método findEmails(id) e findFones(id). Estes métodos serão chamados quando eu clicar no [+]. A tela será atualizada quando o DWR chamar o método de callback.

Abaixo um exemplo bem simples de callback (não testei, é só pra ilustrar):

function callbackEmails(lista){

var conteudo = “”;

for(int i=0; i < lista.length; i++){

conteudo += <tr><td> + lista[i] + <td/><tr/>

}

document.getElementById(tabela).innerHTML = conteudo;

}

Agora vem a pergunta: É possível criar um callback diferente, que não use innerHTML pra atualizar um <core:foreach> que já esteja oculto na tela? É que não quero ficar reescrevendo html, mas sim dar um refresh num trecho de código onde existe uma tag do struts que esteja esperando uma lista.

Att,

Alessandro

1 Resposta

alessandro.a.r

O Sr. Aleck me deu a solução para o problema:

// no serviço do DWR String[] resposta = new String[3]; resposta[0] = getCtx().forwardToString("/WEB-INF/jsp/includes/vr.jsp");

// no jsp &lt;div id="divVR" class="floatRightEq" style="width:48.3%;"&gt;&lt;jsp:include page="vr.jsp" flush="true"&gt;&lt;/jsp:include&gt;&lt;/div&gt;

// no javascript PedidoLookup.recarregarResumo(parametros, function (data) { $("#painel1").html(data[0]); // este é o comando do jquery equivalente ao innerhtml });

Criado 17 de julho de 2009
Ultima resposta 2 de ago. de 2009
Respostas 1
Participantes 1