Pessoal,
tenho uma página jsp onde há uma textarea. O usuário escreve nela e submete, sendo que ele volta para a mesma pagina, que agora tem o que ele digitou aparecendo em outro local, em html. Acontece que se ele der um reload na página com o navegador, a mesma informação é gravada duas vezes, e fica repetida na página. Tem como evitar isso, sem ter que percorrer e comparar todos os textos que o usuário já digitou toda vez que for carregar a página?
Valeu.
use a session para saber isso 
Desculpe, não entendi… 
Pelo que entendi seria o seguinte… Quando você submete o texto, grave na session algo do tipo “new”; vá para o componete/página de processamento da requisição e compare se existe na session o “new”. Se existir grave, senão existir não grave.
Depois de gravar o texto, apague da session o “new”… Acho que isso deve te dar uma luz. :thumbup:
Cheers,
Se vc ficar com esse negócio de new não vai dar certo, mas poderia fazer algo parecido com isso.
Salve o tempo da requisisão(Metodo existente no HttpSession), assim vc conseguirá validar.
Falou
Complementando:
A técnica sugerida combina um “token” armazenado na sessão juntamente com um campo “hidden” do formulário. A lógica é a seguinte:
-
No controller que recebe a requisição da página que apresenta o formulário, gere um número aleatório (em sites de baixo tráfego, pode até ser o System.currentTimeMillis() ). Salve este valor na sessão sob um nome conhecido, tal como “nomedoform.token”. Na página em si, use um input hidden cujo valor será preenchido com o valor do atributo “nomedoform.token”. Dê ao mesmo um nome que faça sentido, “token”, p.ex.
-
No controller que recebe o POST do formulário, compare o valor da variável “token” recebida no request ao valor do atributo “nomedoform.token”. Se o atributo não existir ou seu valor for diferente do submetido, redirecione para a mensagem de erro “formulário já enviado”. Caso contrário prossiga no processamento do mesmo.
Valeu, galera.
Vou tentar implementar o que vcs estão sugerindo.