Problema com F5 no cadastro

Boa tarde pessoal!

Eu tenho uma tela de cadastro. O formulário é “lincado” com uma bean.

Depois que eu cadastro um registro eu aperto F5 e ele cadastra a mesma coisa no banco…como eu faço pra ele “limpar” o ultimo cadastro?

Desde já agradeço!

Você está trabalhando com quais FrameWorks ?

JSF + PrimeFaces

se estiver usando o jsf tenta o @RequestScoped no bean ou @ViewScoped (uso sempre view)

Após gravar você pode também instanciar novamente seu objeto. Não muito recomendado.

Ou limpando o form assim:

UIForm form = (UIForm) context.getViewRoot().findComponent("seuform"); cleanSubmittedValues(form);

[code]private void cleanSubmittedValues(UIComponent component) {
    if (component instanceof EditableValueHolder) {
        EditableValueHolder evh = (EditableValueHolder) component;
        evh.setSubmittedValue(null);
        evh.setValue(null);
        evh.setLocalValueSet(false);
        evh.setValid(true);
    }
    if (component.getChildCount() > 0) {
        for (UIComponent child : component.getChildren()) {
            cleanSubmittedValues(child);
        }
    }
}[/code]

Ou zera a variavel após o envio.

tentei de tudo mais nao deu ainda :S

Olá,

Esse conselho vale para qualquer framework e qualquer linguagem, e é adequado para seu problema:

Quando o usuario dá um F5 no browser, a última solicitação realizada é sempre re-enviada ao servidor. Não importa qual é a tela que ele está vendo agora, nem com quais dados está preenchida, e o pior: não importa se essa solicitação duplicada causará algum efeito ruim. O browser sempre envia uma solicitação idêntica à anterior.

No caso, é como se o usuario estivesse preenchendo e enviando o formulario de inclusão tudo de novo.

Por isso, os POSTs que alteram o sistema não devem gerar uma página como retorno, e sim redirecionar para uma outra.

Assim:

  • Usuario submete formulario de inclusao
  • Sistema processa os dados
  • Sistema envia um REDIRECT para a pagina onde o usuario devera estar (por exemplo, volta para a tela de consulta ou mesmo para a tela de inclusão, para que ele faça outra).
  • Browser abre a nova tela.
  • Se o usuario apertar F5, o que será recarregado é a consulta e não aquele post inicial.

Esse padrão é conhecido como Redirect After Post. Faça uma pesquisa no Google que tem várias coisas sobre o assunto.

E, só pra ter certeza, se vc tiver alguma dificuldade com os conceitos de Forward e Redirect recomendo este artigo: http://www.rponte.com.br/2008/07/12/repitam-comigo-redirect-nao-e-forward/
(só estou dizendo porque nao sei qual seu nivel de experiencia, mas se vc já souber pode ser util para outros)