Meus cumprimentos “javista” a todos…
Caros colegas to como um prob aki de atualizaçao de tabela dinamica (ajax frame dwr + annotation).
Dah seguinte forma:
tenho uma janela (mostrada abaixo) que de tempos em tempos (20000 msegundos ) suas duas tabelas sao atualizas buscando dados nao banco no servidor da aplicacao.
O codigo tah meu instavel, ora funciona ora nao. As vezes aparece empenho e ligacao corretos (ultimas inserçoes no banco) outra vez aparece empenho correto e ligacao erradas e vice versa.
Li algo ai na net sobre atualiazar via servidor mais nao entendi muito nem funcionou aki. Vi sobre polling, Comet e outros metodos apresantado mais nao obtive sucesso (referencia: http://directwebremoting.org/dwr).
O q parece eh que o dwr armazena lixo nas consultas e nao consegue exibir os dados corretos. Com o passar do tempo que a aplicaçao estah rodando o probabilidade de erro aumenta e os problemas começam a aparecer. Serah q existe uma metodo do dwr q limpa todos as referencia aos objetos da pagina?? sei lah!!!
Alguem tem um help ai ou alguma ideia do q poderia estar causando essa instabidade… ahhh se alguem souber de um exemplo ai de atualizar via server bem simples passa o link, please…
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!--<meta http-equiv="refresh" content="40">-->
--<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><bean:message key="janela.principal.title"></bean:message></title>
<script type='text/javascript' src='/not/dwr/interface/Empenho.js'></script>
<script type='text/javascript' src='/not/dwr/interface/Ligacao.js'></script>
<script type='text/javascript' src='/not/dwr/engine.js'></script>
<script type='text/javascript' src='/not/dwr/util.js'></script>
<script type="text/javascript" >
setTimeout("montaGrids",20000);
function montaGrids()
{
DWRUtil.useLoadingMessage();
carregaListEmpenho();
carregaListLigacao();
}
function carregaListEmpenho()
{
Empenho.consultarTodos('EmpenhoForm',montaGridEmpenho);
}
function carregaListLigacao()
{
Ligacao.consultarTodos('LigacaoForm',montaGridLigacao);
}
function montaGridLigacao(list)
{
DWRUtil.removeAllRows('gridLigacao');
var cellFuncs =
[
function(data)
{
return data.hora_fato
},
function(data)
{
return data.hora_ligacao;
},
function(data)
{
return '<input id="inputLigacao" type="button" style="color:#FF0000" value="' + data.codigo + ' " onclick="chamaLigacao(this);"/>';
},
function(data)
{
return '<input type="checkbox" name="cxNaoGeraBmo" value="GerarBmo" />';
}
];
DWRUtil.addRows('gridLigacao',list,cellFuncs,{ escapeHtml:false } );
}
function montaGridEmpenho(list)
{
DWRUtil.removeAllRows('gridEmpenho');
var cellFuncs =
[
function(data)
{
return data.nomeAgente;
},
function(data)
{
return data.numViatura;
},
function(data)
{
return '<input id="inputEmpenho" type="button" value="'+ data.num_bmo + '" onclick="chamaEmpenho(this);"/>';
}
];
DWRUtil.addRows('gridEmpenho',list, cellFuncs, { escapeHtml:false } );
}
function fone(e)
{
var input = e.srcElement || e.target;
value = input.value;
value = value.replace(/\D/g,'').split('');
var vL = value.length;
for(var i=0;i < vL;i++)
{
if(i == 0)
{
value[i] = '(' + value[i];
//value = abre + value;
}
if(i == 2)
{
//value = fecha + value;
value[i] = ')' + value[i];
}
if (i ==5)
{
//value = value + separador;
value[i] += '-';
}
}
input.value = value.join('');
}
function chamaEmpenho(input)
{
var empenho = input.value;
var form = document.forms[0];
form.action = 'MostraEmpenho.do?input=' + empenho + '';
form.submit();
}
function chamaLigacao(input)
{
var ligacao = input.value;
var form = document.forms[0];
if(form.cxNaoGeraBmo.checked)
{
form.action = '.do?input=' + ligacao + '';
}
else
{
form.action = 'MostraLigacao.do?input=' + ligacao + '';
}
form.submit();
}
function chamaBusca()
{
var form = document.forms[1];
var value = form.txtBusca.value;
Empenho.consultarEmpenho(value,submeterBusca);
}
function submeterBusca(empenho)
{
if(empenho == null)
alert('Empenho não existe.');
else
{
var form = document.forms[1];
var value = form.txtBusca.value;
form.txtBusca.value = '';
form.action = 'BuscaEmpenho.do?input=' + value + '';
form.submit();
}
}
function chamaAltera()
{
var form = document.forms[1];
var value = form.txtAltera.value;
Empenho.consultarEmpenho(value,submeterAltera);
}
function submeterAltera(empenho)
{
if(empenho == null)
alert('Empenho não existe.');
else
{
var form = document.forms[1];
var value = form.txtAltera.value;
form.txtAltera.value='';
form.action = 'AlterarBmo.do?input=' + value + '';
form.submit();
}
}
function Mascara(e)
{
var input = e.srcElement || e.target;
value = input.value;
value = value.replace(/\D/g,'').split('');
vL = value.length;
input.value = value.join('');
}
function getDate()
{
Todays = new Date();
TheDate = Todays.getDate() +"/"+ (Todays.getMonth()+1) + "/" + Todays.getFullYear();
DWRUtil.setValue('txtData',TheDate);
}
function formatTime(e)
{
// pega elemento do evento
var input = e.srcElement || e.target;
// pega valor
value = input.value;
// tira os caracters invalidos e quebra string em partes N:1
value = value.replace(/\D/g,'').split('');
// pega tamanho
vL = value.length;
for(var i = 0; i < vL; i++)
{
// se for 1
if(i==1)
{
value[i] += ':';
}
}
// junta tudo e coloca como valor
input.value = value.join('');
}
function getHora()
{
var hoje = new Date();
var hora = hoje.getHours();
var minuto = hoje.getMinutes();
var HoraTrans = ""+ hora +":" + minuto;
DWRUtil.setValue('txtHoraTrans',HoraTrans);
}
</script>
</head>
<body onload="montaGrids();" bgcolor="#6699FF">
<OBJECT ID="Player" widht="300" height="250" CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
<PARAM name="URL" value="phone.wma">
<PARAM name="uiMode" value="invisible">
</OBJECT>
<table border="0" align="center">
<thead>
<tr>
<form name="formPrincipal" action="" method="POST" target="_blank">
<th>
<fieldset style="width: 20%;" >
<legend align="center"><b><bean:message key="janela.principal.empenho"></bean:message></b></legend>
<table border="1" align="center">
<tr>
<td><b> Agente </b></td>
<td><b> Viatura </b></td>
<td><b> Bmo </b></td>
</tr>
<tbody id="gridEmpenho"> </tbody>
</table>
</fieldset>
</th>
<th>
<fieldset style="width: 20%;">
<legend align="center"><b><bean:message key="janela.principal.ligacao"></bean:message></b></legend>
<table border="1" align="center">
<tr>
<td><b> Hora Fato </b></td>
<td><b> Hora Ligação </b></td>
<td><b> Ligação </b></td>
<td><b> Gerar Bmo </b></td>
</tr>
<tbody id="gridLigacao"></tbody>
</table>
</fieldset>
</th>
</form>
</tr>
</thead>
</table>
<form name="formBusca" action="" method="POST" target="_blank">
<table border="0" align="center">
<tbody>
<tr>
<td><b><bean:message key="janela.principal.busca"></bean:message></b></td>
<td><input type="text" name="txtBusca" value="" onkeyup="Mascara(event);" maxlength="5" size="10" /></td>
<td><input type="button" value="Ok" onclick="chamaBusca();"name="bntBuscar" /></td>
</tr>
<tr>
<td><b><bean:message key="janela.principal.altera"></bean:message></b></td>
<td><input type="text" name="txtAltera" value="" maxlength="5" onkeyup="Mascara(event);" size="10" /></td>
<td><input type="button" value="Ok" onclick="chamaAltera();"name="bntAlterar" /></td>
</tr>
<tr>
<td>
<input type="button" value="Empenhar" onclick="window.open('pages/EmpenharViaRadio.jsp','Radio')" name="bntEmpenhar" />
</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
Agradecido …
Ateh
Carlos Martins