Como impedir que uma página seja submetida diversas vezes

12 respostas
P

Tenho algumas páginas de cadastro no jsf e gostaria de usar uma rotina para impedir o usuário submeter mais de uma vez uma página.
É bastante comum quando o usuário faz um cadastro e por alguma razão a página demora para concluir o cadastro, ele fica precionando diversas vezes o botão de cadastrar na esperença de tornar a conclusão do cadastro mais rapida. O problema é que essa ação faz com que o cadastro seja feita diversas vezes e tenho a necessidade de impedir isso.
Parece que existe um pattern que implementa essa funcionalidade, mas não sei qual seria… Será que alguém teria esse conhecimento ???

12 Respostas

D

hum…solucao javascript…após clicar no botao de submeter, disabilite o botao.

[]'s

R

“Diana”:
hum…solucao javascript…após clicar no botao de submeter, disabilite o botao.

[]'s

… e após o carregar habilite novamente, tipo no load do body!

flw!

P

Bem, javacsript não seria a solução que estou procurando… não considero uma boa prática fazer um tratamento como esse no lado cliente… ainda mais que já existe um pattern que resolve isso numa boa…

R

mas essa é uma ação do lado do cliente !!! :sad:
… mas se vc achar o pattern q faz isso … post ai!

flw!

P

Mas se for para utilizar javascript a ação será realizada no lado cliente… estou errado ???

C

Se ja existe um pattern que resolve pq vc não o usa?!
Ou vc não sabe se existe?

P

A informação que me foi passada em um curso que eu fiz é que existe… parece que o nome desse pattern é token, mas não achei nada direcionado a isso…
Vou mandar depois do almoço um e-mail pra ele é pedir alguns detalhes, mas eu queria ir adiantando alguma coisa desde já…

R

Está certo! e qual é o problema ?

Eu costumo utilzar um …

… na classe de persistência, e este resultado poderia ser encaminhado para a view que validaria a liberação do botão!

J

Cara eu ultilizo o conceito de Tokens.

Tokens servem com um ouvinte de ação que dá tratamento especial a ações sensiveis e ações com formularios sensiveis. para cada ação que possui um formulario sensivel, o ouvinte cria um string unica, chamada TOKEN. então o ouvinte coloca tal token tanto na solicitação quanto na sessão.Quando o formulario sensivel é submetido, uma nova solicitação é gerada e uma ação sensivel é executada. Mas antes que a ação sensivel seja executada, o ouvinte desta ação verifica se ambos os TOKENS estão presentes e são identicos. Se for este o caso, a ação sensivel é executada do contrario é emitida uma exceção.

Exemplos do livro JavaServerPages Avançado, o capitulo 7 possui exemplos de gerenciamento de eventos e ressubissões de formulario sensivel.

http://authors.phptr.com/advjsp/code/sourceco.jar o capitulo é 7

P

Mas vc teria algum link que daria mais detalhes sobre o tokens ??? As pessoas falam muito em utilizar javascript para esse tipo de situação, mas eu não considero uma boa solução… O pior são aqueles que acham interessante resolver diversos tipos de problemas com javascript como validação de dados, submeter para outra página qdo tiver vários botões de submit e outras coisas que pode ser implementadas via código…

A

Cara,
aqui no meu trampo eu fiz assim, quando o cara clica no botao eu armazeno os valores do form e aponto para uma definição com uma mensagem de espera e com a tag meta do html, forçando um refresh instantaneo na tela, ai eu devolvo os valores para o form bean e executo a busca!
No meu caso estou usando tiles e struts para isso!
Não sei quais o framework’s vc usa, as vezes com TOKEN fica melhor mesmo!

G

Dá uma olhada nesse link:

http://javaalmanac.com/egs/javax.servlet.jsp/myformts.jsp.html?l=rel

:wink:

Criado 21 de julho de 2005
Ultima resposta 22 de jul. de 2005
Respostas 12
Participantes 7