Problema Com Atualização de Página Primefaces [RESOLVIDO]

Boa Tarde.

Galera é o seguinte tenho um página de cadastro bem simples e uma tela de listagem desses cadastros:

Listagem:


<?xml version='1.0' encoding='ISO-8859-1' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
        <link rel = "stylesheet" type = "text/css" href = "css/default.css"/>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    </h:head>
    <ui:composition template="index.xhtml">  
        <ui:define name="conteudo">  
            <f:view>
                <body>
                    <h:form id="formFormasDeImplementacaoDaAcao">
                        <p:messages showDetail="true" id="msgs" />
                        <p:panel header="Formas de Implementacao da A&ccedil;&atilde;o">
                            <p:dataTable id="dtFormasDeImplementacaoDaAcao" var="item" value="#{FormaDeImplementacaoDaAcaoBean.formasDeImplementacaoDaAcao}"
                                         emptyMessage="N&atilde;o h&aacute; dados" selection="#{FormaDeImplementacaoDaAcaoBean.formaDeImplementacaoDaAcao}"
                                         selectionMode="single" rowKey="#{item.id}">
                                <p:column headerText="C&oacute;digo">
                                    #{item.codigo}
                                </p:column>
                                <p:column headerText="Descri&ccedil;&atilde;o">
                                    #{item.descricao}
                                </p:column>
                            </p:dataTable>

                            <br/>
                            <p:commandButton icon="ui-icon-document" value="Novo" action="#{FormaDeImplementacaoDaAcaoBean.adicionarInicio}" update=":formFormasDeImplementacaoDaAcao"/>
                            <p:commandButton icon="ui-icon-pencil" value="Editar" action="#{FormaDeImplementacaoDaAcaoBean.editarInicio}" ajax="false"/>

                            <p:commandButton icon="ui-icon-close" value="Excluir" action="#{FormaDeImplementacaoDaAcaoBean.excluirInicio}" update=":formFormasDeImplementacaoDaAcao:msgs :formFormasDeImplementacaoDaAcao:dlg"/>

                            <p:dialog id="dlg" widgetVar="confirmation" >
                                Deseja excluir esse registro?<br/><br/>
                                <p:commandButton id="confirm" value="Sim" action="#{FormaDeImplementacaoDaAcaoBean.excluirFim}" oncomplete="confirmation.hide()" update=":formFormasDeImplementacaoDaAcao:msgs :formFormasDeImplementacaoDaAcao:dtFormasDeImplementacaoDaAcao"/>
                                <p:commandButton id="decline" value="N&atilde;o" onclick="confirmation.hide()" action="#{FormaDeImplementacaoDaAcaoBean.cancelar}"  update=":formFormasDeImplementacaoDaAcao:dtFormasDeImplementacaoDaAcao" />
                            </p:dialog>
                            
                        </p:panel>
                    </h:form>
                </body>
            </f:view>  
        </ui:define>  
    </ui:composition> 
</html>

Cadastro:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
        <title>Forma de Implementa&ccedil;&atilde;o da a&ccedil;o</title>
    </head>
    <ui:composition template="index.xhtml">  
        <ui:define name="conteudo">  
            <f:view>
                <body>
                    <h:form id="formFormaDeImplementcaoDaAcao" >
                        <p:growl showDetail="true"/>
                        <center>
                            <p:panel header="Forma de Implementa&ccedil;&atilde;o da A&ccedil;&atilde;o" style="width: 450px;text-align: left">

                                <h:panelGrid columns="2" >
                                    <h:panelGroup>
                                        <h:outputLabel value="C&oacute;digo*"/><br/>
                                        <p:inputMask value="#{FormaDeImplementacaoDaAcaoBean.formaDeImplementacaoDaAcao.codigo}"
                                                     required="true" requiredMessage="O campo c&oacute;digo&eacute;requerido" mask="99" size="5"/>
                                    </h:panelGroup>
                                    <h:panelGroup>
                                        <h:outputLabel value="Descri&ccedil;&atilde;o*"/><br/>
                                        <p:inputText styleClass="up" value="#{FormaDeImplementacaoDaAcaoBean.formaDeImplementacaoDaAcao.descricao}" 
                                                     required="true" requiredMessage="O campo descri&ccedil;&atilde;o&eacute;requerido" size="40"/>
                                    </h:panelGroup>

                                </h:panelGrid>

                                <hr/>
                                <p:commandButton icon="ui-icon-disk" value="Gravar" action="#{FormaDeImplementacaoDaAcaoBean.adicionarEditarFim}" ajax="false"/>
                                <p:commandButton icon="ui-icon-cancel" value="Cancelar" action="#{FormaDeImplementacaoDaAcaoBean.cancelar}" immediate="true" ajax="false"/>

                            </p:panel>
                        </center>
                    </h:form>
                </body>
            </f:view>
        </ui:define>
    </ui:composition>
</html>

E meu código para salvar:

public String adicionarEditarFim() {
        formaDeImplementacaoDaAcaoDAO.salvarOuAtualizar(formaDeImplementacaoDaAcao);
        formaDeImplementacaoDaAcao = new FormaDeImplementacaoDaAcao();
        formasDeImplementacaoDaAcao = null;
        return "FormasDeImplementacaoDaAcao";
}

O Problema é que depois de salvar um registro, se eu der um F5 para atualizar a página de listagem
ele gera uma nova linha no banco com o ultimo registro salvo, ou seja, ele duplica o ultimo registro que foi salvo.

Pessoal Debuguei agora e vi que o método adicionarEditarFim é chamado de novo

quando eu atualizo a página de listagem.

[quote=Daniel T.S]Pessoal Debuguei agora e vi que o método adicionarEditarFim é chamado de novo

quando eu atualizo a página de listagem.[/quote]

Qual é o escopo do Bean?

Escopo de sessao.

Alguém tem alguma ideia?

Já pesquisei e achei pessoas com o mesmo problema mas soluções nada.

Aguardo.

[quote=Daniel T.S]Alguém tem alguma ideia?

Já pesquisei e achei pessoas com o mesmo problema mas soluções nada.

Aguardo.[/quote]

Estou com o mesmo problema.

Galera resolvi colocando "?faces-redirect=true"
no final da String de retorno.

O método adicionarEditarFim

ficou assim:


public String adicionarEditarFim() {
        horizonteTemporalDAO.salvarOuAtualizar(horizonteTemporal);
        horizonteTemporal = new HorizonteTemporal();
        horizontesTemporais = null;
        return "HorizontesTemporais"+Parametros.REDIRECT_TRUE.getDescricao();
    }

Sendo que Parametros é uma Enum:


package br.com.bsistemas.ppa.enums;

/**
 *
 * @author Daniel
 * 
 */

public enum Parametros {

    REDIRECT_TRUE("?faces-redirect=true");

    private Parametros(String descricao) {
        this.descricao = descricao;
    }
    
    private String descricao;

    public String getDescricao() {
        return descricao;
    }

}