CRUD JSF 2.0 + PrimeFaces 2.2

Pessoal estou com problemas para cria um CRUD usando jsf 2.0 + primefaces 2.2 + hibernate 3.6, consigo efetuar a inclusao e exclusao do objeto porem nao consigo criar uma tela para alteração, ja vi alguns modelos mas nao funciona é como se o objeto nao tivesse nenhum valor (campos para edição vem em branco), segue codigos.
Controller

package com.geco.controller;

import com.geco.hibernate.util.dao.FornecedorDao;
import com.geco.model.Fornecedor;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import org.hibernate.HibernateException;

/**
 *
 * @author mpolverini
 */
@ManagedBean
@ViewScoped
public class FornecedorController implements Serializable {

    private Fornecedor fornecedor = new Fornecedor();
    private List listaFornecedor;

    public Fornecedor getFornecedor() {
        fornecedor = new Fornecedor();
        return fornecedor;
    }

    public void setFornecedor(Fornecedor fornecedor) {
        this.fornecedor = fornecedor;
    }

    public List getListaFornecedor() {
        try {
            listaFornecedor = new FornecedorDao().list();
        } catch (HibernateException hex) {
            hex.printStackTrace();
        }
        return listaFornecedor;
    }

    public void save() {
        FornecedorDao dao = new FornecedorDao();
        try {
            dao.save(fornecedor);
            msg(1, "Cadastro", "Cadastrado com Sucesso!");
        } catch (HibernateException hex) {
            msg(3, "Erro", "Cadastro não Efetuado!");
            hex.printStackTrace();
        }
    }

    public void update() {
        FornecedorDao dao = new FornecedorDao();
        try {
            dao.update(fornecedor);
            msg(1, "Atualização", "Atualizado com Sucesso!");
        } catch (HibernateException hex) {
            msg(3, "Erro", "Cadastro não Atualizado!");
            hex.printStackTrace();
        }
    }

    public void remove() {
        FornecedorDao dao = new FornecedorDao();
        try {
            dao.remove(fornecedor);
            msg(1, "Exclusão", "Excluido com Sucesso!");
        } catch (HibernateException hex) {
            msg(3, "Erro", "Cadastro não Excluido!");
            hex.printStackTrace();
        }
    }

    /**
     * 
     * @param icon 1=info 2=warn 3=fatal
     * @param title
     * @param msg 
     */
    public void msg(int icon, String title, String msg) {
        if (icon == 1) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, title, msg));
        } else if (icon == 2) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, title, msg));
        } else if (icon == 3) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, title, msg));
        }
    }
}

XHTML

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition template="./../../template/template.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"  
                xmlns:p="http://primefaces.prime.com.tr/ui"  
                xmlns:f="http://java.sun.com/jsf/core"  
                xmlns:h="http://java.sun.com/jsf/html"  
                xmlns:ui="http://java.sun.com/jsf/facelets"> 

    <ui:define name="modal">
        <h:form>
            <p:confirmDialog widgetVar="remov" message="EXCLUIR FORNECEDOR SELECIONADO ?" showEffect="slide" hideEffect="clip">
                <p:commandButton value="Sim" image="ui-icon ui-icon-trash" action="#{fornecedorController.remove}" onclick="remov.hide()" update="tabela,growl"/>
                <p:commandButton value="Não" onclick="remov.hide()"/>            
            </p:confirmDialog>
        </h:form>
    </ui:define>
    <ui:define name="top">
        <b>&lt;h:outputText value="Generencia de Fornecedores" style="font-family: Tahoma; font-size: 15px; font: bold;" /&gt;</b>
    &lt;/ui:define&gt;

    &lt;ui:define name="center"&gt;
        <br/>
        &lt;p:fieldset legend="Cadastrar" toggleable="true" toggleSpeed="400"&gt;
            &lt;h:form&gt;
                &lt;h:panelGrid columns="6"&gt;
                    &lt;h:outputLabel value="Razão social :"/&gt;
                    &lt;p:inputText size="40" required="true" requiredMessage="Informe a Razão Social !" value="#{fornecedorController.fornecedor.razao_soc}" style="text-transform: uppercase"/&gt;
                    &lt;h:outputLabel/&gt;&lt;h:outputLabel/&gt;&lt;h:outputLabel/&gt;&lt;h:outputLabel/&gt;
                    &lt;h:outputLabel value="Endereço :"/&gt;
                    &lt;p:inputText size="40" required="true" requiredMessage="Informe o Endereço !" value="#{fornecedorController.fornecedor.endereco}" style="text-transform: uppercase"/&gt;
                    &lt;h:outputLabel value="Bairro :"/&gt;
                    &lt;p:inputText size="20" required="true" requiredMessage="Informe o Bairro !" value="#{fornecedorController.fornecedor.bairro}" style="text-transform: uppercase"/&gt;
                    &lt;h:outputLabel value="Cidade :"/&gt;
                    &lt;p:inputText size="20" required="true" requiredMessage="Informe a Cidade !" value="#{fornecedorController.fornecedor.cidade}" style="text-transform: uppercase"/&gt;
                    &lt;h:outputLabel value="Estado :"/&gt;
                    &lt;p:inputText size="5" required="true" requiredMessage="Informe o Estado !" maxlength="2" value="#{fornecedorController.fornecedor.uf}" style="text-transform: uppercase"/&gt;
                    &lt;h:outputLabel value="CEP :"/&gt;
                    &lt;p:inputMask mask="99999-999" maxlength="8" size="12" required="true" requiredMessage="Informe o CEP" value="#{fornecedorController.fornecedor.cep}" style="text-transform: uppercase"/&gt;
                    &lt;h:outputLabel value="CNPJ :"/&gt;
                    &lt;p:inputMask mask="99.999.999/9999-99" maxlength="14" requiredMessage="Informe o CNPJ" size="20" required="true" value="#{fornecedorController.fornecedor.cnpj}" style="text-transform: uppercase"/&gt;
                    &lt;h:outputLabel value="Insc. Estadual :"/&gt;
                    &lt;p:inputText size="20" required="true" requiredMessage="Informe a Insc. Estadual" value="#{fornecedorController.fornecedor.insc_estad}" style="text-transform: uppercase"/&gt;
                    &lt;h:outputLabel value="Telefone :"/&gt;
                    &lt;p:inputMask mask="(99) 9999-9999" size="12" maxlength="10" required="true" requiredMessage="Informe o Telefone" value="#{fornecedorController.fornecedor.tel1}" style="text-transform: uppercase"/&gt;
                    &lt;h:outputLabel value="Telefone :"/&gt;
                    &lt;p:inputMask mask="(99) 9999-9999" size="12" maxlength="10" value="#{fornecedorController.fornecedor.tel2}" style="text-transform: uppercase"/&gt;
                    &lt;h:outputLabel value="E-mail :"/&gt;
                    &lt;p:inputText size="20" value="#{fornecedorController.fornecedor.email}" style="text-transform: uppercase" /&gt;
                    &lt;h:outputLabel value="Contato :"/&gt;
                    &lt;p:inputText size="20" value="#{fornecedorController.fornecedor.contato}" style="text-transform: uppercase"/&gt;
                    &lt;h:outputLabel/&gt;&lt;h:outputLabel/&gt;
                    &lt;p:commandButton  title="Salvar" update="growl,tabela" action="#{fornecedorController.save}" image="ui-icon ui-icon-disk"/&gt;
                    &lt;p:commandButton  title="Limpar" image="ui-icon ui-icon-trash" type="reset"/&gt;
                &lt;/h:panelGrid&gt;
            &lt;/h:form&gt;
        &lt;/p:fieldset&gt;
        <br/>
        &lt;h:form id="bts"&gt;
            &lt;p:commandButton id="bt1" action="#{viewComp.look}" rendered="#{viewComp.fornecedor==false}" update="tabela,bts" value="Ver Cadastros"/&gt;
            &lt;p:commandButton id="bt2" action="#{viewComp.nLook}" rendered="#{viewComp.fornecedor}" update="tabela,bts" value="Fechar Cadastros"/&gt;
        &lt;/h:form&gt;
        <br/>
        &lt;p:fieldset legend="Cadastros" toggleable="true" toggleSpeed="500" id="tabela" rendered="#{viewComp.fornecedor}"&gt;
            &lt;h:form&gt;
                &lt;p:dataTable id="tbl" var="fornecedor" value="#{fornecedorController.listaFornecedor}" paginator="true" rows="5"
                             selection="#{fornecedorController.fornecedor}" selectionMode="single"&gt;
                    &lt;p:column&gt;  
                        &lt;f:facet name="header"&gt;  
                            &lt;h:outputText value="Id" title="Identificador" /&gt;  
                        &lt;/f:facet&gt;  
                        &lt;h:outputText value="#{fornecedor.cod_fornecedor}" /&gt;  
                    &lt;/p:column&gt; 

                    &lt;p:column &gt;  
                        &lt;f:facet name="header" &gt;  
                            &lt;h:outputText value="Razão Social"  /&gt;  
                        &lt;/f:facet&gt;  
                        &lt;h:outputText value="#{fornecedor.razao_soc}" /&gt;  
                    &lt;/p:column&gt;  

                    &lt;p:column&gt;  
                        &lt;f:facet name="header"&gt;  
                            &lt;h:outputText value="Endereço" /&gt;  
                        &lt;/f:facet&gt;  
                        &lt;h:outputText value="#{fornecedor.endereco}" /&gt;  
                    &lt;/p:column&gt; 
                    &lt;p:column&gt;  
                        &lt;f:facet name="header"&gt;  
                            &lt;h:outputText value="Bairro" /&gt;  
                        &lt;/f:facet&gt;  
                        &lt;h:outputText value="#{fornecedor.bairro}" /&gt;  
                    &lt;/p:column&gt; 
                    &lt;p:column&gt;  
                        &lt;f:facet name="header"&gt;  
                            &lt;h:outputText value="Cidade" /&gt;  
                        &lt;/f:facet&gt;  
                        &lt;h:outputText value="#{fornecedor.cidade}" /&gt;  
                    &lt;/p:column&gt; 
                    &lt;p:column&gt;  
                        &lt;f:facet name="header"&gt;  
                            &lt;h:outputText value="Uf" title="Estado" /&gt;  
                        &lt;/f:facet&gt;  
                        &lt;h:outputText value="#{fornecedor.uf}"/&gt;  
                    &lt;/p:column&gt; 
                    &lt;p:column&gt;  
                        &lt;f:facet name="header"&gt;  
                            &lt;h:outputText value="CEP" /&gt;  
                        &lt;/f:facet&gt;  
                        &lt;h:outputText value="#{fornecedor.cep}" /&gt;  
                    &lt;/p:column&gt; 
                    &lt;p:column&gt;  
                        &lt;f:facet name="header"&gt;  
                            &lt;h:outputText value="Telefone(1)" /&gt;  
                        &lt;/f:facet&gt;  
                        &lt;h:outputText value="#{fornecedor.tel1}" /&gt;  
                    &lt;/p:column&gt; 
                    &lt;p:column&gt;  
                        &lt;f:facet name="header"&gt;  
                            &lt;h:outputText value="Telefone(2)" /&gt;  
                        &lt;/f:facet&gt;  
                        &lt;h:outputText value="#{fornecedor.tel2}" /&gt;  
                    &lt;/p:column&gt; 
                    &lt;p:column&gt;  
                        &lt;f:facet name="header"&gt;  
                            &lt;h:outputText value="E-mail" /&gt;  
                        &lt;/f:facet&gt;  
                        &lt;h:outputText value="#{fornecedor.email}" /&gt;  
                    &lt;/p:column&gt; 
                    &lt;p:column&gt;  
                        &lt;f:facet name="header"&gt;  
                            &lt;h:outputText value="Contato" /&gt;  
                        &lt;/f:facet&gt;  
                        &lt;h:outputText value="#{fornecedor.contato}" /&gt;  
                    &lt;/p:column&gt; 
                    &lt;p:column &gt;  
                        &lt;f:facet name="header"&gt;  
                            &lt;h:outputText value="CNPJ" title="Cadastro Nacional Pessoa Juridica" /&gt;  
                        &lt;/f:facet&gt;  
                        &lt;h:outputText value="#{fornecedor.cnpj}" /&gt;  
                    &lt;/p:column&gt; 
                    &lt;p:column&gt;  
                        &lt;f:facet name="header"&gt;  
                            &lt;h:outputText value="Insc. Estadual" title="Inscrição Estadual." /&gt;  
                        &lt;/f:facet&gt;  
                        &lt;h:outputText value="#{fornecedor.insc_estad}" /&gt;  
                    &lt;/p:column&gt; 
                    &lt;f:facet name="footer"&gt;
                        &lt;p:commandButton value="Editar" async="true" image="ui-icon ui-icon-search" type="button" onclick="alert('Em Desenvolvimento !')"/&gt;
                        &lt;p:commandButton value="Excluir" image="ui-icon ui-icon-wrench" onclick="remov.show()" type="button"/&gt;
                    &lt;/f:facet&gt;
                &lt;/p:dataTable&gt;
                &lt;h:commandLink&gt;  
                    &lt;p:graphicImage value="/img/pdf.png" /&gt;  
                    &lt;p:dataExporter target="tbl" type="pdf" fileName="Fornecedores ASK!" preProcessor="#{dataExporter.preProcessPDF}"/&gt;
                &lt;/h:commandLink&gt;
                &lt;h:commandLink&gt;  
                    &lt;p:graphicImage value="/img/excel.png" /&gt;  
                    &lt;p:dataExporter type="xls" target="tbl" fileName="Fornecedores ASK!" postProcessor="#{dataExporter.postProcessXLS}"/&gt;  
                &lt;/h:commandLink&gt; 
            &lt;/h:form&gt;
        &lt;/p:fieldset&gt;
    &lt;/ui:define&gt;
&lt;/ui:composition&gt;

No meu alterar atualizo o form de alteração para garantir a leitura e seto o objeto na propriedade :

     <p:commandButton
                                            update="cadGeral:formEndereco:infoEdit"
                                            value="Editar"
                                            oncomplete="dialog_enderecos.show()"
                                            title="Alterar"
                                            immediate="true"
                                            process="@this">
                                            <f:setPropertyActionListener value="#{end}"
                                                                         target="#{cadastroPessoasMB.endereco}" />
      </p:commandButton>

Tentei dessa forma porem ocorre o seguinte o dialog nao aparece com oncomplete e ele recarrega a pagina inteira. O botão excluir funciona porem no dialog ocorre que nao consigo puxar nenhum valor do ‘fornecedor’

Codigo da parte do edit

 <f:facet name="footer">
                        <p:commandButton  
                            update="upd:dialog"  
                            value="Editar"  
                            oncomplete="alt.show();"  
                            title="Alterar"  
                            immediate="true"  
                            process="@this">  
                            <f:setPropertyActionListener value="#{fornecedor}"  
                                                         target="#{fornecedorController.fornecedor}" />
                        </p:commandButton>  
                        <p:commandButton value="Excluir" image="ui-icon ui-icon-wrench" onclick="remov.show()" type="button"/>
                    </f:facet>

ninguem ?

No update tente atualizar o form da sua linha 25.