Duplicação de requisições em aplicações Web

Fala aí pessoal, blz? Seguinte, estamos com um problema meio chato aqui em uma aplicação que usa Velocity… Em momentos de instabilidade (lentidão) no servidor (o pessoal do suporte já está verificando) descobrimos que nossos usuários estão um tanto quanto impacientes e quando clicam em um botão, por exemplo, confirmar e a aplicação não responde imediatamente, os queridos clicam novamente no botão ‘pro sistema mudar de telinha’, gerando uma nova requisição e algumas vezes, ocorrendo duplicação de registros. Bom, posso desabilitar o botão e impossibilitar o usuário de clicar novamente mas… descobrimos que existem algumas outras ‘mentes brilhantes’ que estão fazendo diferente… No momento da lentidão, clicam em ‘voltar’ no browser e enviam a requisição novamente, ocorrendo o mesmo problema, inclusive habilitando o botão novamente, se o mesmo estivesse desabilitado… Pensei em criar uma solução ‘caseira’ mas logo pensei, alguém mais deve ter passado por esse problema, vou compartilhar com a galera e ver o que os mesmos fazem para resolver o tal. E aí, o que vc’s fazem? Abraço e valeu!!

Paz e bem!

Cara, eu tive um problema parecido com clique no botão. O que eu fiz foi usar a4j:status (Eu uso richFaces) com os eventos onStart e onStop, daí em qualquer requisição ajax ele roda esses dois eventos. O que eu faço aí é exibir um modal “processando” e quando a requisição para eu escondo o modal. O efeito é muito interessante e muito leve também, e como eu uso a4j:commandoButton e templates, precisei fazer isso em uma única página(que é meu template básico).

Agora quanto ao botão voltar não testei ainda, vou verificar isso, mas ficamos amarrados por nossas aplicações dependerem de um navegador…

hum… saquei. Estava pesquisando e achei essa solução http://www.javaworld.com/javatips/jw-javatip136.html (que parece com uma que havia pensado). Alguém já implementou? Valeu!

Paz e bem!

Ah, só para complementar, quero saber se alguém já implementou fora do Struts…

Paz e bem!