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)!
[b]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??[/b]
[code]
<%@ page
import=“com.AgendarCompromissos”
%>
<jsp:useBean id=“objAgendar” class=“com.AgendarCompromissos” />[/code]
<form name="fComp" method="post" action="compromisso.jsp">
<%
if ((request.getParameter("btCadastrar") != null)){
objAgendar.setAssunto(request.getParameter("edAssunto"));
...
...
...
out.print("" + objAgendar.gravar());
}
%>
Apos o cadastro, faca um redirect para outra pagina, assim se alguem der refresh, nao vai inserir os dados de novo.
Rafael
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:
[code]
response.sendRedirect(“compromisso.jsp”);[/code]
O Script em JS não funciona!
Existe alguma outra alternativa?
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
[quote=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[/quote]
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!
Faz assim:
"<script>alert('Cadastro Efetuado com Sucesso!');document.location = 'cadastrar_compromisso.jsp';</script>"
Rafael
[quote=Rafael Steil]Faz assim:
"<script>alert('Cadastro Efetuado com Sucesso!');document.location = 'cadastrar_compromisso.jsp';</script>"
Rafael[/quote]
Poh, Rafael… funcionou!
Valeu cara… obrigado!