Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Re submissão após o foward

Na aula "páginas dinâmicas" como utilizamos o foward para manter os dados da request , fazemos o redirecionamento apenas no servidor e a url vai ficar sempre atrasada, se pressionamos o F5 vamos submeter novamente o formulário da página anterior. Existe alguma forma de impedir a re-submissão do formulário após um foward?

9 respostas

Acredito que você teria que tratar isso com javascript.

Oi Josué,

para resolver o problema do F5 vc usa

 response.sendRedirect("nome da url");

invés do forward.

sendRedirect causa que o servidor devolve uma resposta HTTP com um cabeçalho especial (Location). E quando o navegador recebe esse cabeçalho, ele automaticamente enviará um novo request para o servidor. Isso tbm é chamado de redirect client side

abs

Sim, mas o redirect com forward pelo servidor tambem reenvia o formulário. Ou estou enganado?

bom então se eu estou na página de cadastro e após a inclusão eu quiser redirecionar para a página de exibição ou edição eu ao invés de dar foward eu poderia fazer:

response.sendRedirect("nome_da_url?meu_id="+ algumId);

é boa prática?

O correto é usar o RequestDispatcher.

@Felipe

o RequestDispatcher não resolve o problema do F5. Através do RequestDispatcher vc fará um redirecionamento server-side.

Usando response.sendRediret(..) vc fará um redirecionamento através do navegador, enviando uma nova requisição.

abs

Mais o certo é você proteger sua camada das views e fazer o redirecionamento pelo servidor, sem que o usuário saiba.

solução!

Oi Felipe,

ambas as formas serão utilizadas. Em alguns casos é preciso trocar a requisição para evitar o reenvio de dados do form através do F5. Isso é um exemplo clássico do response.sendRedirect(..).

Vou te dar um outro exemplo: Faça logout do alura e tente acessar /dashboard (sem login). Você automaticamente será redirecionado para página de login! Adivinha como? :)

Depois faça o login e você será autmaticamente redirecionado para o /dashboard. Adivinha como? :)

São dois exemplos concretos da Alura onde se usa response.sendRedirect(..) e tem outros.

Espero ter ajudado!Continuem estudando.

abs

Hum. interessante! Obrigado.