RESSOLVIDO - Barra de Progresso com RequestDispatcher include usando servlet

5 respostas
L

Minha ideia era fazer dentro de um iframe, um form que chamasse um servlet…
esse servlet atualizaria a cada loop de um for (processamento), um jsp dentro do iframe…
esse jsp recebe um paremetro porcentagem e monta o grafico da barra de progresso…

mas ao ler um pouco, ercebi que o sendRedirect do response soó pode ser chamado uma vez…
percebi tambem que o include do requestdispatcher so mostra o resultado das solicitacoes no final do processo…

preciso que essa tela com a barra de progresso seja atualizada a cada loop de um for na servlet…

alguma dica??? alguma luz por onde possa seguir???

5 Respostas

B

lauronolasco, você pode, dentro de um loop no código Java, atribuir um atributo à sessão com o percentual.

E usando a função setInterval do javascript, fazer uma chamada via XML que lê esse atributo a cada X segundos e atualiza a barra pra você.

L

mas é realmente impossível atualizar a pagina com o objeto response ,ais de u,a vez???
ou há como fazer?

B

Vou partir do princípio que está usando só jsp e servlet.

Use a seguinte função javascript:

function executarXML(link) {

var retorno = “”;

if (isNetscape || isMozilla) {

var xmlHttp = new XMLHttpRequest();

xmlHttp.open(POST,link, false);

} else if (isIE) {

xmlHttp = new ActiveXObject(Microsoft.XMLHTTP);

xmlHttp.Open(POST,link, false);

}

retorno = xmlHttp.responseText;

eval(retorno);

}

Onde link é uma chamada válida pro seu Servlet, pra um método que pegue o atributo da sessão. Aí é só você retornar algo do tipo:

document.getElementById(“nomeDaDiv”).innerHTML = “

Carregando…
”;

Onde 50% é a percentual do andamento que está no atributo da sessão.

Bom, é um exemplo só pra dar uma idéia e sem usar nenhuma outra ferramenta.

L

resolvi de uma forma alternativa…

na minha aplicacao eu tenho um Vector static, de usuarios conectados…
criei um subobjeto na classe Usuario chamado Processo, que contem alguns atributos, dentre eles o percentual processado…
tenho um popup que quando abre chama o servlet, que redireciona para um jsp, que se atualiza a cada 1 segundo com javascript ( setTimeout(‘atualizar()’,1000); )…
e quando chega aos 100% nao atualiza mais…

resolveu o problema tranquilo… mas obrigado pela dica do xml… valeu mesmo

B

Por nada. Esse é o bacana, sempre tem uma solução legal e inteligente pro problema que temos :smiley:

Criado 4 de fevereiro de 2009
Ultima resposta 6 de fev. de 2009
Respostas 5
Participantes 2