Problemas com botão "Voltar" no Browser.  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
g4j
GUJ Ranger
[Avatar]

Membro desde: 02/05/2007 14:32:03
Mensagens: 817
Localização: Curitiba
Offline

Srs,

Acredito que esse problema seja comum até.
Tem no meu sistema um cadastro, onde os usuários preenchem os campos e confirma, prosseguindo pra outra tela. Só que alguns infelizes estão usando o botão Voltar do browser e confirmando o cadastro anterior novamente. Então, tá duplicando registros!

Umas das saídas seria tirar os botões da barra de navegação, mas só consigo fazer isso sem popup no firefox.

Alguem já teve que resolver esse problema, ou alguem tem alguma solução?


Gerson Luiz Chagas

SCJP 5.0
SCWCD 5.0

jwalker
Thread.start()
[Avatar]

Membro desde: 23/10/2008 13:41:00
Mensagens: 31
Offline

Velho,
tenta dar um reset no teu form.

form.reset();

Abraços

Mulher[] ml = getMulheres();
int aDeHoje = (int) (Math.random()*ml.length);
Mulher m = ml[aDeHoje];
m.setMuda(true);
m.setBonita(true);
m.setFuckGood(true);
[Email] [WWW] [MSN]
g4j
GUJ Ranger
[Avatar]

Membro desde: 02/05/2007 14:32:03
Mensagens: 817
Localização: Curitiba
Offline

jwalker wrote:Velho,
tenta dar um reset no teu form.

form.reset();

Abraços


Não posso dar reset. É que os dados da aba/tela anterior precisam ficar ali, pois a segunda tela depende dos dados da primeira e tenho que manter os dados sempre na tela. Só que o usuário não usa o botão voltar do formulário, e sim o botão Voltar do browser (history.back()).

Gerson Luiz Chagas

SCJP 5.0
SCWCD 5.0

Giulliano
GUJ Master
[Avatar]

Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline

Eu tive esse problema recentemente....a minha idáia era capturar o evento de clicar no voltar, mas isso é impossível.

Então eu achei duas solulções...uma é não permitir q o cara volte pra pagian anterioir colocando a tag


e outra solução é se vc estiver usando o Hibernate sempre chamar o update ao invés do save...pq o update veririfica se o cara existe e se não existir chama o save...se existir dá update...

[]'s

Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi




<UnTouChAbLe>
[Email] [WWW] [MSN]
g4j
GUJ Ranger
[Avatar]

Membro desde: 02/05/2007 14:32:03
Mensagens: 817
Localização: Curitiba
Offline

Olá Giulliano, obrigado pela resposta,

Giulliano wrote:Eu tive esse problema recentemente....a minha idáia era capturar o evento de clicar no voltar, mas isso é impossível.

Então eu achei duas solulções...uma é não permitir q o cara volte pra pagian anterioir colocando a tag



Legal. Essa alternativa funciona tanto no IE qto no FF? Pergunto isso porque eu achei uma alternativa parecida, porém só funciona no FF:


Giulliano wrote:
e outra solução é se vc estiver usando o Hibernate sempre chamar o update ao invés do save...pq o update veririfica se o cara existe e se não existir chama o save...se existir dá update...

[]'s


Ok, uso hibernate no sistema, mas quando o botão voltar é clicado, não existe o campo chave preenchido (hidden), portanto meu objeto fica sem a chave, sendo assim, tanto faz update ou save, correto?

This message was edited 1 time. Last update was at 05/12/2008 12:22:08


Gerson Luiz Chagas

SCJP 5.0
SCWCD 5.0

dricorj
Thread.start()

Membro desde: 24/10/2006 01:54:17
Mensagens: 33
Offline

eu uso window.history.forward(1); e funciona no IE e no FF.
Giulliano
GUJ Master
[Avatar]

Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline

Cara eu não sei se a solução do history é cross browser...mas eu acredito que sim.

Esse tipo de erro requer "gambiarras práticas"...não tem jeito. Se seu campo chave não esta preenchido vc pode optar por fazer uma busca no banco pra ver se o registro existe (isso se vc tiver os valores)...

enfim, existem deiversas maneiras de resolver isso caso a caso...provavelmente nenhuma delas será elegante ou 100%.

Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi




<UnTouChAbLe>
[Email] [WWW] [MSN]
g4j
GUJ Ranger
[Avatar]

Membro desde: 02/05/2007 14:32:03
Mensagens: 817
Localização: Curitiba
Offline

Giulliano wrote:Cara eu não sei se a solução do history é cross browser...mas eu acredito que sim.

Esse tipo de erro requer "gambiarras práticas"...não tem jeito. Se seu campo chave não esta preenchido vc pode optar por fazer uma busca no banco pra ver se o registro existe (isso se vc tiver os valores)...

enfim, existem deiversas maneiras de resolver isso caso a caso...provavelmente nenhuma delas será elegante ou 100%.


É verdade. Ja pensei em fazer validação buscando no banco. Acredito que seja a forma que mais me agrada. Mas penso que isso pode se repetir em diversos locais do sistema, aí fica impraticável ficar fazendo esse tipo de verificação pra contornar.

Existem outras formas, inclusive ja vi sistemas que abrem um popup (window.open) tirando a barra de botões. Isso até minimiza o problema, mas não o resolve.

Gerson Luiz Chagas

SCJP 5.0
SCWCD 5.0

jgbt
GUJ Master
[Avatar]

Membro desde: 04/06/2003 15:01:48
Mensagens: 1286
Localização: Porto Alegre/RS
Offline

Ola,
a melhor alternativa no lado cliente ainda é algo na linha do:


no lado servidor tem outras opções. Uma delas é o token, que impede o mesmo formulario de ser enviado 2x.
Quase todos frameworks web tem controle de tokens.

[]´s

João Bier
Desenvolvedor Java
[Email]
g4j
GUJ Ranger
[Avatar]

Membro desde: 02/05/2007 14:32:03
Mensagens: 817
Localização: Curitiba
Offline

jgbt wrote:Ola,
a melhor alternativa no lado cliente ainda é algo na linha do:


no lado servidor tem outras opções. Uma delas é o token, que impede o mesmo formulario de ser enviado 2x.
Quase todos frameworks web tem controle de tokens.

[]´s


Boa jgbt,

vou tratar de ver como isso funciona...

Gerson Luiz Chagas

SCJP 5.0
SCWCD 5.0

 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team