Refresh na Pagína!

6 respostas
the_negao

E ae pessoal, sou novato no uso de JSP... e utilizando JavaBeans eu faço um cadastro simples! Usando o MySQL!

Nessa página, no form eu dou um post para ela mesma, ou seja, depois que cadastro os dados e clico no botão cadastrar eu chamo a mesma tela em branco (claro)!

O PROBLEMA!
Se eu der um F5 na página em branco, ela cadastra os dados da página anterior de novo no BD!

Por que será que acontece isso??

<%@ page 
	import="com.AgendarCompromissos"
%>

<jsp:useBean id="objAgendar" class="com.AgendarCompromissos" />
<form name="fComp" method="post" action="compromisso.jsp">
<%
if ((request.getParameter("btCadastrar") != null)){
	objAgendar.setAssunto(request.getParameter("edAssunto"));
	...
	...
	...
	out.print("" + objAgendar.gravar());
}
%>

6 Respostas

Rafael_Steil

Apos o cadastro, faca um redirect para outra pagina, assim se alguem der refresh, nao vai inserir os dados de novo.

Rafael

the_negao

Mas tipo!

out.print("" + objAgendar.gravar());

O método gravar retornar uma String, que no caso seria uma String com o comando em JavaScript de um Alert contendo um suposto "cadastro efetuado com sucesso" ou um "erro de conexão com o BD"...

E efetuando o:
response.sendRedirect("compromisso.jsp");

O Script em JS não funciona!
Existe alguma outra alternativa?

Rafael_Steil

Bom, “o script JS nao funciona” nao diz coisa alguma. O que acontece? aparece uma mensagem de erro de sintaxe invalida? fica tudo em braco? o browser explode?

Rafael

the_negao

Rafael Steil:
Bom, “o script JS nao funciona” nao diz coisa alguma. O que acontece? aparece uma mensagem de erro de sintaxe invalida? fica tudo em braco? o browser explode?

Rafael

Ah! Tentando explicar melhor!

out.print("" + objAgendar.gravar());
response.sendRedirect("cadastrar_compromisso.jsp");

O método gravar() retorna um String contendo:
“”

Como está dentro de um out.print() ele imprime o código JS no código na página… daí assim que ele imprimi ele automaticamente o executa… exibindo o Alert(Cadastro Efetuado com Sucesso);

Mas ao adiciona o sendRedirect após o out.print() o alert não é exibido!

Rafael_Steil

Faz assim:

"<script>alert('Cadastro Efetuado com Sucesso!');document.location = 'cadastrar_compromisso.jsp';</script>"

Rafael

the_negao

Rafael Steil:
Faz assim:

"<script>alert('Cadastro Efetuado com Sucesso!');document.location = 'cadastrar_compromisso.jsp';</script>"

Rafael

Poh, Rafael… funcionou!

Valeu cara… obrigado!

Criado 28 de março de 2005
Ultima resposta 28 de mar. de 2005
Respostas 6
Participantes 2