| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/06/2007 12:19:27
|
bonfarj
Java Ninja
![[Avatar]](/images/avatar/1454ca2270599546dfcd2a3700e4d2f1.jpg)
Membro desde: 28/03/2006 09:55:47
Mensagens: 298
Offline
|
Estou desenvolvendo um sistema (Struts + Hibernate) onde as modificações de uma entidade só fazem sentido quando feitas em conjunto. Todas as mudanças na entidade são armazenadas na sessão (HttpSession), sendo persistidas apenas quando o usuário clica no botão "Salvar". O problema é que muitas vezes o usuário esquece disso e acaba saindo da tela sem apertar o botão e com isso as alterações são perdidas.
Já reparei que alguns sites cuidam disso, detectando quando o usuário tenta entrar em alguma outra tela, digita algum endereço no browser ou tenta fechá-lo. Alguém sabe como isso é feito?
abraços!
|
IGOR BRITO ALVES
@igoralves
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/06/2007 12:33:45
|
Pedrosa
JWizard
![[Avatar]](/images/avatar/2b763288faedb7707c0748abe015ab6c.jpg)
Membro desde: 13/07/2005 13:08:08
Mensagens: 2505
Localização: São Paulo - Brasil
Offline
|
Coloque uma função no body no evento onUnload, quando o usuário tentar fechar você valida do jeito que quiser:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/06/2007 12:34:49
|
marcelux
Debugger
Membro desde: 25/06/2007 12:29:10
Mensagens: 62
Offline
|
Cara, pelo que eu entendi isso é um evento que tratamos em javascript
<body onunload="confirm('deseja sair da tela?')">
e por ai vai!
[]
|
scjp, scwcd, scbcd
Marcelo Sousa Lima |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/06/2007 12:36:57
|
maquiavelbona
JWizard
![[Avatar]](/images/avatar/24bea84d52e6a1f8025e313c2ffff50a.jpg)
Membro desde: 29/06/2006 09:06:51
Mensagens: 2447
Localização: São Paulo - SP
Offline
|
Vale lembrar que isso nem sempre funciona, depende do browser e do nível de segurança do mesmo.
Parte dos sites maliciosos usam esse artifício, que alguns browsers já retiram por padrão.
Até!
|
----------------------------------------------------------------
"Within a few years a simple and inexpensive device, readily carried about, will enable one to receive on land or sea the principal news, to hear a speech, a lecture, a song or play of a musical instrument, conveyed from any other region of the globe. "
Nikola Tesla - A means for furthering Peace (1905)
"Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind."
Immanuel Kant - Kritik der reinen Vernunft (1781) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/06/2007 13:15:05
|
danieldestro
Moderador
![[Avatar]](/images/avatar/a5bfc9e07964f8dddeb95fc584cd965d.png)
Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline
|
Já que guarda os dados na sessão e vc não deseja problemas com Javascript, crie um Servlet Filter, que verifica se existe uma edição de dados em andamento (via uma flag na sessão), e que ele mesmo valida se você foi pra outra página sem salvar o conteúdo, redirecionando para uma tela com os dados e a confirmação das alterações.
É uma idéia.
|
gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/06/2007 14:46:34
|
carneiro
JavaEvangelist
![[Avatar]](/images/avatar/18b91b19f6a289e7708da7f778b2c609.jpg)
Membro desde: 07/04/2005 11:37:42
Mensagens: 328
Offline
|
Acho que o mais fácil é escrever no cantinho da página q as alteracoes só serao persistidas caso ele clique em salvar
|
Davi Luan Carneiro
Desenvolvedor JEE |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/06/2007 18:19:57
|
danieldestro
Moderador
![[Avatar]](/images/avatar/a5bfc9e07964f8dddeb95fc584cd965d.png)
Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline
|
Mais fácil para o desenvolvedor ou para o usuário?
Mas quem paga o salário do desenv? heheheehhe
|
gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/06/2007 19:18:28
|
bonfarj
Java Ninja
![[Avatar]](/images/avatar/1454ca2270599546dfcd2a3700e4d2f1.jpg)
Membro desde: 28/03/2006 09:55:47
Mensagens: 298
Offline
|
Eu não conhecia esse evento "onunload", muito interessante! Mas ele não resolve o problema, pois ele permite que o usuário mude de tela, o evento é disparado após a mudança.
O que eu gostaria de fazer é parecido com o que o Gmail faz. Quando um usuário começa a escrever um e-mail e clica em algum outro link, o sistema avisa que sua mensagem ainda não foi e se você deseja descartá-la. Como ele faz isso?
valeu pessoal, obrigado pela atenção!!
|
IGOR BRITO ALVES
@igoralves
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/06/2007 13:04:50
|
bonfarj
Java Ninja
![[Avatar]](/images/avatar/1454ca2270599546dfcd2a3700e4d2f1.jpg)
Membro desde: 28/03/2006 09:55:47
Mensagens: 298
Offline
|
Resolvido, pessoal! Alguns browsers possuem o evento onbeforeunload, que possibilita "cortar" o fluxo, mantendo o usuário na página atual! Meu amigo falou que o Firefox suporta desde a 0.9 e o IE tb há tempos. Como são os browsers que dominam o mercado, vou dar como suficiente.
PS: o jeito que o Google faz me pareceu sutiltmente diferente, se alguém souber algo a respeito não deixe de nos contar!
grande abraço, pessoal!!
|
IGOR BRITO ALVES
@igoralves
|
|
|
 |
|
|