Prevenir Re-Submissão do Formulário +Struts

2 respostas
mpaulobr

Olá Pessoal, estou desenvolvendo um aplicação utilizando Struts, e me deparei com o seguinte problema:

Quando o usuário cadastra ou edita(atualiza) algum dado, (formulário qualquer), depois que submeteu a ação para salvar ou atualizar, é levado para uma outra pagina (até ai tudo bem).

O problema: Se caso o usuário, depois de ter inserido ou alterado os dados apertar no F5(refresh) ele executa o ultimo metodo…

Como eu faço para não ocorra esse tipo de coisa.

(Struts)

Atenciosamente

2 Respostas

velo

Bem não sei como…

Mas…

Uma dia boa de usabilidade é sempre dar feedback ao usuário. O seu sistema deve (ou pelo menos num mundo ideal deveria) ser construído de tal forma que o usuário nunca precisace resubmeter uma coisa se ele jah submeteu. E especialmente, o usuário precisa receber um feedback que o clique dele deu certo.

Mas, acidentes acontecem. O cara pode até dar um double click sem querer.

O que eu faço é esconder o botão e desabilitar o formulário no onClick :smiley:

VELO

P

Use o pattern “redirect-after-post” e “transaction tokens”.

O primeiro consiste em fazer com que a resposta de um post seja um redirect. Como resultado final, o F5 repete o GET e não o POST.

Os “transaction tokens” são uma solução robusta para evitar a submissão do mesmo form, e complementam o bloqueio via JavaScript. Veja na documentação do struts como usá-los. Consiste em um parâmetro “nonce” que fica na sessão e como um parâmetro adicional “hidden” no formulário. No POST, o struts verifica se o valor submetido está na sessão. Se estiver, o post é válido, e o token será removido. Se o token não for encontrado, é uma repetição do post, e este será ignorado.

Criado 2 de novembro de 2006
Ultima resposta 3 de nov. de 2006
Respostas 2
Participantes 3