Atualizar dados de tempo em tempo com javascript e java

8 respostas
guilhermebhte

Estou usando este codigo para atualizar um Span de 5 em cinco segundos

<script language="JavaScript" type="text/javascript">
<!--
function conta(contador) {
	document.getElementById('tempo').innerHTML=contador;
	if (contador != 0){
		contador = contador-1;
		setTimeout("conta(" + contador + ")", 1000);
	} else {
		contador = 5;
		setTimeout("conta(" + contador + ")", 1000);
	}
}
-->
</script>

Agora preciso que este javascript faça uma consulta nesse tempo tambem, como fazer ?

<%
StringBuilder sqlUsuarioEmpresa = new StringBuilder();
sqlUsuarioEmpresa.append(" SELECT DISTINCT coalesce(cad_cedente.ced_fantasia, cad_cedente.ced_nome, 'Selecionar empresa') AS emp_nome ");
sqlUsuarioEmpresa.append(" FROM fr_usuario ");
sqlUsuarioEmpresa.append(" LEFT JOIN cad_empresa_atual ON cad_empresa_atual.ema_usuario = fr_usuario.usr_codigo ");
sqlUsuarioEmpresa.append(" LEFT JOIN cad_cedente ON cad_cedente.id_cedente = cad_empresa_atual.id_filial ");
sqlUsuarioEmpresa.append(" WHERE fr_usuario.usr_login = '" + wi.getUser() + "' ");
PreparedStatement pStmtUsuarioEmpresa = conn.getPreparedStatement(sqlUsuarioEmpresa.toString());
ResultSet rSetUsuarioEmpresa = pStmtUsuarioEmpresa.executeQuery();
String empresaLogada = null;

while (rSetUsuarioEmpresa.next()) {
	empresaLogada = rSetUsuarioEmpresa.getString("emp_nome");
}
%>

8 Respostas

drsmachado

Coloca um refresh automático na página, camarada.

guilhermebhte

Nao posso. Preciso que so altere este componente.

drsmachado

Conhece ajax?
Coloca esse trecho em outra jsp, cria uma div dentro da jsp em que ela está atualmente e faz o refresh via ajax.

Aliás, scriptlet é para matar, hein?

ivolanski

Estou com praticamente o mesmo problema, a diferença é que uso struts 2, hibernate, etc…

Tenho um form e logo abaixo dele uma tabela, quando preencho os dados desse form a tabela deve ser atualizada, porem imagine que vária pessoas estão nessa mesma página e a tabela deve ser atualizada com informações de todos os usuários.

não posso dar refresh na página pois o usuário pode estar preenchendo o form e perderia estas informações…

desculpe, mas resposta como use ajax não vão resolver, sou muito noob, preciso de alguma informação mais específica…

Muito obrigado

ivolanski

segue abaixo exemolo do que preciso

seria essa jsp, com um form em cima e atualizando sem piscar a tela nem atrapalhando o preenchimento do form

obrigado

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="refresh"
	content="5;URL=gerarCorrida.action?funcao=renovarCorrida">
<title>Sistaxi - Gerar Corrida</title>

</head>
<body>
	<table border=3 align="center">
		<tr>
			<th colspan=3 align="center">
				<h1>Corridas Ativas</h1>
			</th>
		</tr>
		<tr>
			<th align="center">Cliente</th>
			<th align="center">RT</th>
			<th align="center">Ação</th>

		</tr>
		<s:iterator value="listaCorrida">
			<tr>
				<td width="33%" align="center"><s:property value="cliente.nome" />
				</td>
				<td width="33%" align="center"><s:property value="taxi.rt" />
				</td>
				<td width="33%" align="center"><s:set name="id"
						value="listaCorrida[#stat.index].id" /> <input name=""
					type="button"
					onclick="parent.location.href='gerarCorrida.action?corrida.id=<s:property value="id" />&funcao=cancelarCorrida' "
					value="Cancelar"></td>
			</tr>
		</s:iterator>
	</table>
</body>
</html>
guilhermebhte

drsmachado:
Conhece ajax?
Coloca esse trecho em outra jsp, cria uma div dentro da jsp em que ela está atualmente e faz o refresh via ajax.

Aliás, scriptlet é para matar, hein?

Estou chamando o jquery

Criei o arquivo “empresaUsuario.jsp”, nao estou sabendo como continuar daqui em diante.

E

com o jquery vc só precisa colocar esse script java em um jsp, e chamar assim por javascript:

$("#id_do_componente").load("url_da_pagina_com_os_dados")
camila.java

Eu posso inserir essa linha na minha função de contar

Exemplo:

function conta(contador) {
	document.getElementById('tempo').innerHTML=contador;
	if (contador != 0){
		contador = contador-1;
		setTimeout("conta(" + contador + ")", 1000);
	} else {
		contador = 5;
		$("#empresaLogada").load("main.jsp #link");
		setTimeout("conta(" + contador + ")", 1000);

	}
}
Criado 11 de outubro de 2011
Ultima resposta 16 de nov. de 2011
Respostas 8
Participantes 5