JSF problema com alteração de registro [RESOLVIDO]

Galera to com um problema que nunca tinha visto antes, eu tenho uma tela cadastro_cliente, quando cadastro um usuario as validações de tela funcionam normalmente, tudo certinho mas quando estou tentando alterar um registro o ciclo de vida do jsf é interrompido por algum motivo antes da faze de validações, ele é enterrompido na faze aplicar os valores do requesta naum tenho ideia do porque e queria saber se alguem ja passou por isso para me ajudar a resolver esse problema.
vou colocar todos os codigos envolvidos nesse problema

cadastro_usuario

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition template="template.xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:p="http://primefaces.org/ui"
                xmlns:f="http://java.sun.com/jsf/core">
    
    <ui:define name="content">
        <h:form id="form" styleClass="form-horizontal">
            <fieldset>
                <legend>#{msgs.cadastroCliente}</legend>
                
                <p:growl id="growl" showDetail="true" autoUpdate="true" life="#{msgs.life}" />
                
                <p:tabView id="tabView">
                    
                    <p:tab id="tab1" title="#{msgs.dadosPrincipais}">
                        <p:focus />
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.nome}" styleClass="control-label" />
                            <div class="controls">
                                <p:inputText value="#{clienteController.cliente.nome}" styleClass="#{msgs.inputXLarge}"
                                             required="true" requiredMessage="#{msgs.nomeRequerido}" />
                            </div>
                        </div>
                        
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.cpf}" styleClass="control-label" />
                            <div class="controls">
                                <p:inputMask value="#{clienteController.cliente.cpf}" styleClass="#{msgs.inputXLarge}"
                                             mask="#{msgs.cpfMask}"
                                             required="true" requiredMessage="#{msgs.cpfRequerido}" />
                            </div>
                        </div>
                        
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.rg}" styleClass="control-label" />
                            <div class="controls">
                                <p:inputMask value="#{clienteController.cliente.rg}" styleClass="#{msgs.inputXLarge}"
                                             mask="#{msgs.rgMask}"
                                             required="true" requiredMessage="#{msgs.rgRequerido}" />
                            </div>
                        </div>
                        
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.email}" styleClass="control-label" />
                            <div class="controls">
                                <p:inputText value="#{clienteController.cliente.email}" styleClass="#{msgs.inputXLarge}"
                                             required="true" requiredMessage="#{msgs.emailRequerido}" 
                                             validator="emailValidator"/>
                            </div>
                        </div>
                        
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.sexo}" styleClass="control-label" />
                            <div class="controls">
                                <p:selectOneRadio value="#{clienteController.cliente.sexo}" >
                                    <f:selectItem itemValue="2" itemLabel="Feminino"/>
                                    <f:selectItem itemValue="1" itemLabel="Masculino"/>
                                </p:selectOneRadio>
                            </div>
                        </div>
                        
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.observacao}" styleClass="control-label" />
                            <div class="controls">
                                <p:inputTextarea value="#{clienteController.cliente.observacao}" styleClass="#{msgs.inputXLarge}" />
                            </div>
                        </div>
                    </p:tab>
                    
                    <p:tab id="tab2" title="#{msgs.enderecoResidencial}">
                        <p:focus />
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.rua}" styleClass="control-label" />
                            <div class="controls">
                                <p:inputText value="#{clienteController.cliente.enderecoresidencia.rua}" styleClass="#{msgs.inputXLarge}"
                                             required="true" requiredMessage="#{msgs.ruaRequerido}" />
                            </div>
                        </div>
                        
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.bairro}" styleClass="control-label" />
                            <div class="controls">
                                <p:inputText value="#{clienteController.cliente.enderecoresidencia.bairo}" styleClass="#{msgs.inputXLarge}"
                                             required="true" requiredMessage="#{msgs.bairroRequerido}" />
                            </div>
                        </div>
                        
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.numero}" styleClass="control-label" />
                            <div class="controls">
                                <p:inputText value="#{clienteController.cliente.enderecoresidencia.numero}" styleClass="#{msgs.inputXLarge}"
                                             required="true" requiredMessage="#{msgs.numeroRequerido}" />
                            </div>
                        </div>
                        
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.estado}" styleClass="control-label" />
                            <div class="controls">
                                <p:selectOneMenu value="#{clienteController.idEstadoResidemcial}">
                                    <f:selectItems var="est" value="#{clienteController.listaEstado}" itemLabel="#{est.estado}" itemValue="#{est.idEstado}" />
                                    <p:ajax event="change" listener="#{clienteController.carregarMunicipiosEndResidencial()}" update="panel1" />
                                </p:selectOneMenu>
                            </div>
                        </div>
                        
                        <p:outputPanel id="panel1">
                            <div class="control-group">
                                <h:outputLabel value="#{msgs.municipio}" styleClass="control-label" />
                                <div class="controls">
                                    <p:selectOneMenu value="#{clienteController.idMunicipioResidencial}">
                                        <f:selectItems value="#{clienteController.listaMunicipioResidencial}" var="munc" itemLabel="#{munc.municipio}"
                                                       itemValue="#{munc.idMunicipio}" />
                                    </p:selectOneMenu>
                                </div>
                            </div>
                        </p:outputPanel>
                    </p:tab>
                    
                    <p:tab id="tab3" title="#{msgs.enderecoComercial}">
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.rua}" styleClass="control-label" />
                            <div class="controls">
                                <p:inputText value="#{clienteController.cliente.enderecotrabalho.rua}" styleClass="#{msgs.inputXLarge}" />
                            </div>
                        </div>
                        
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.bairro}" styleClass="control-label" />
                            <div class="controls">
                                <p:inputText value="#{clienteController.cliente.enderecotrabalho.bairo}" styleClass="#{msgs.inputXLarge}" />
                            </div>
                        </div>
                        
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.numero}" styleClass="control-label" />
                            <div class="controls">
                                <p:inputText value="#{clienteController.cliente.enderecotrabalho.numero}" styleClass="#{msgs.inputXLarge}" />
                            </div>
                        </div>
                        
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.estado}" styleClass="control-label" />
                            <div class="controls">
                                <p:selectOneMenu value="#{clienteController.idEstadoComercial}">
                                    <f:selectItems var="est" value="#{clienteController.listaEstado}" itemLabel="#{est.estado}" itemValue="#{est.idEstado}" />
                                    <p:ajax event="change" listener="#{clienteController.carregarMunicipiosEndComercial()}" update="panel2" />
                                </p:selectOneMenu>
                            </div>
                        </div>
                        
                        <p:outputPanel id="panel2">
                            <div class="control-group">
                                <h:outputLabel value="#{msgs.municipio}" styleClass="control-label" />
                                <div class="controls">
                                    <p:selectOneMenu value="#{clienteController.idMunicipioComercial}">
                                        <f:selectItems value="#{clienteController.listaMunicipioComercial}" var="munc2" itemLabel="#{munc2.municipio}"
                                                       itemValue="#{munc2.idMunicipio}" />
                                    </p:selectOneMenu>
                                </div>
                            </div>
                        </p:outputPanel>
                    </p:tab>
                    
                    <p:tab id="tab4" title="#{msgs.usuario}">
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.usuario}" styleClass="control-label" />
                            <div class="controls">
                                <p:inputText value="#{clienteController.cliente.usuario.usuario}" styleClass="#{msgs.inputXLarge}"
                                             required="true" requiredMessage="#{msgs.usuarioRequerido}" />
                            </div>
                        </div>
                        
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.senha}" styleClass="control-label" />
                            <div class="controls">
                                <p:password value="#{clienteController.senha1}" styleClass="#{msgs.inputXLarge}"
                                            required="true" requiredMessage="#{msgs.senhaRequerido}" match="pwd2"
                                            feedback="true" goodLabel="#{msgs.goodLabel}" weakLabel="#{msgs.weakLabel}"
                                            strongLabel="#{msgs.strongLabel}" promptLabel="#{msgs.promptLabel}" 
                                            validatorMessage="#{msgs.cmpSenhaValidatorMsg}"/>
                            </div>
                        </div>
                        
                        <div class="control-group">
                            <h:outputLabel value="#{msgs.repitaSenha}" styleClass="control-label" />
                            <div class="controls">
                                <p:password id="pwd2" value="#{clienteController.senha2}" styleClass="#{msgs.inputXLarge}"
                                            required="true" requiredMessage="#{msgs.repitasenhaRequerido}" />
                            </div>
                        </div>
                    </p:tab>
                </p:tabView>
                
                <div class="form-actions">
                    <p:commandButton value="#{clienteController.labelAcaoBotao}" actionListener="#{clienteController.salvaAtualizar()}"
                                     update=":form"/>
                    <p:commandButton value="Cancelar" styleClass="btn-normal" actionListener="#{clienteController.cancelarInsercao()}"
                                     immediate="true" update=":form"/>
                </div>
            </fieldset>
        </h:form>
    </ui:define>
    
</ui:composition>

lista_cliente

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition template="template.xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:p="http://primefaces.org/ui"
                xmlns:f="http://java.sun.com/jsf/core">
    
    <ui:define name="content">
        <h:form id="form" styleClass="form-horizontal">
            <fieldset>
                <legend>#{msgs.cadastroCliente}</legend>
                
                <p:growl id="growl" showDetail="true" autoUpdate="true" life="#{msgs.life}" />
                
                <p:dataTable var="cli" value="#{clienteController.listaCliente}" 
                             paginator="true" rows="10" 
                             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} 
                             {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}">

                    <p:column filterBy="#{cli.nome}" filterMatchMode="contains">
                        <f:facet name="header">#{msgs.nome}</f:facet>
                        #{cli.nome}
                    </p:column>
                    
                    <p:column>
                        <f:facet name="header">#{msgs.cpf}</f:facet>
                        #{cli.cpf}
                    </p:column>
                    
                    <p:column>
                        <f:facet name="header">#{msgs.email}</f:facet>
                        #{cli.email}
                    </p:column>
                    
                    <p:column style="width: 80px;">
                        <p:commandLink actionListener="#{clienteController.editarItem()}" >
                            <f:setPropertyActionListener value="#{cli}" target="#{clienteController.cliente}" />
                            <p:graphicImage value="../resources/imagens/edit.png" />
                        </p:commandLink>
                        <p:spacer width="10" />
                        <p:commandLink >
                            <p:graphicImage value="../resources/imagens/remove.png" />
                        </p:commandLink>
                    </p:column>
                </p:dataTable>
            </fieldset>
        </h:form>
    </ui:define>
    
</ui:composition>

Clientecontroller

package com.perfect.smile.controller;

import com.perfect.smile.bo.ClienteBO;
import com.perfect.smile.bo.EstadoBO;
import com.perfect.smile.bo.MunicipioBO;
import com.perfect.smile.entidade.Cliente;
import com.perfect.smile.entidade.Estado;
import com.perfect.smile.entidade.Municipio;
import com.perfect.smile.util.Constante;
import com.perfect.smile.util.JsfUtil;
import com.sun.faces.context.flash.ELFlash;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
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.servlet.http.HttpServletRequest;

/**
 * @since 21/10/2012
 * @author Cristian Urbainski   
 */
@ManagedBean
@ViewScoped
public final class ClienteController implements Serializable {
    
    private Cliente cliente;
    private String labelAcaoBotao;
    private String senha1;
    private String senha2;
    private Integer idEstadoResidemcial;
    private Integer idEstadoComercial;
    private Integer idMunicipioResidencial;
    private Integer idMunicipioComercial;
    private List<Municipio> listaMunicipioResidencial;
    private List<Municipio> listaMunicipioComercial;
    private List<Estado> listaEstado;
    private List<Cliente> listaCliente;
    
    public ClienteController() {
        Integer parameter = (Integer) ELFlash.getFlash().get(Constante.CLIENT_EDIT);

        if(parameter == null){
            labelAcaoBotao = Constante.SALVAR;
            cliente = new Cliente();
            cliente.setSituacao(Constante.SITUACAO_ATIVO);
            cliente.setSexo(Constante.SEXO_FEMININO);
        } else {
            labelAcaoBotao = Constante.ALTERAR;
            try {
                cliente = new ClienteBO().findById(parameter);
                this.idEstadoResidemcial = this.cliente.getEnderecoresidencia().getMunicipio().getEstado().getIdEstado();
                if(this.cliente.getEnderecotrabalho() != null){
                    this.idEstadoComercial = this.cliente.getEnderecotrabalho().getMunicipio().getEstado().getIdEstado();
                }
            } catch (Exception e) {
                JsfUtil.mensagemErro(e);
                e.printStackTrace(System.err);
            }
        }

        try {
            listaEstado = new EstadoBO().listEstados();
        } catch (Exception e) {
            JsfUtil.mensagemErro(e);
        }
        
        if(listaEstado == null) {
            return;
        }
        
        if(idEstadoResidemcial == null) {
            idEstadoComercial = listaEstado.get(0).getIdEstado();
            idEstadoResidemcial = listaEstado.get(0).getIdEstado();
        }
        
        carregarMunicipiosEndComercial();
        carregarMunicipiosEndResidencial();
        
        this.idMunicipioResidencial = this.cliente.getEnderecoresidencia().getMunicipio().getIdMunicipio();
        if(this.cliente.getEnderecotrabalho() != null){
            this.idMunicipioComercial = this.cliente.getEnderecotrabalho().getMunicipio().getIdMunicipio();
        }
    }
    
    public void salvaAtualizar(){
        try {
            this.cliente.getUsuario().setSenha(this.senha1);
            
            if(this.cliente.getEnderecotrabalho().getRua().isEmpty() && this.cliente.getEnderecotrabalho().getBairo().isEmpty()) {
                this.cliente.setEnderecotrabalho(null);
            } else {
                this.cliente.getEnderecotrabalho().getMunicipio().setIdMunicipio(idMunicipioComercial);
            }
            
            this.cliente.getEnderecoresidencia().getMunicipio().setIdMunicipio(idMunicipioResidencial);
            
            if(this.cliente.getIdPessoa() == null) {
                this.cliente.getConta().setDataultimomov(new Date());
                this.cliente.getConta().setTipoultmov(Constante.MOVIMENTO_CREDITO_EM_CONTA);
                this.cliente.getConta().setValor(BigDecimal.ZERO);
            }
            
            new ClienteBO().salvarAtualizar(cliente);
            this.cliente = new Cliente();

            JsfUtil.mostrarMensagem(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso", "Cliente gravado com sucesso."));
            
            if(this.labelAcaoBotao.equals(Constante.ALTERAR)) {
                JsfUtil.redirect("/faces/paginas/restrito/lista_cliente.xhtml");
            } else {
                JsfUtil.redirect("");
            }
        } catch (Exception e) {
            e.printStackTrace(System.err);
            JsfUtil.mensagemErro(e);
        }
    }
    
    public void editarItem() {
        System.out.println(this.cliente.getIdPessoa());
        if(this.cliente.getIdPessoa() != null){
            ELFlash.getFlash().put(Constante.CLIENT_EDIT, this.cliente.getIdPessoa());
            JsfUtil.redirect("cadastro_cliente.xhtml");
        }
    }
    
    public void cancelarInsercao() {
        JsfUtil.redirect("cadastro_cliente.xhtml");
    }
    
    public void carregarMunicipiosEndResidencial() {
        try {
            listaMunicipioResidencial = new MunicipioBO().listMunicipio(idEstadoResidemcial);
            this.idMunicipioResidencial = listaMunicipioResidencial.get(0).getIdMunicipio();
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(Constante.LISTA_MUNICIPIO_RESIDENCIAL, listaMunicipioResidencial);
        } catch (Exception e) {
            JsfUtil.mensagemErro(e);
        }
    }
    
    public void carregarMunicipiosEndComercial() {
        try {
            if(idEstadoComercial == null) {
                idEstadoComercial = this.listaEstado.get(0).getIdEstado();
            }
            listaMunicipioComercial = new MunicipioBO().listMunicipio(idEstadoComercial);
            this.idMunicipioComercial = listaMunicipioComercial.get(0).getIdMunicipio();
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(Constante.LISTA_MUNICIPIO_COMERCIAL, listaMunicipioComercial);
        } catch (Exception e) {
            JsfUtil.mensagemErro(e);
        }
    }

    public Integer getIdEstadoResidemcial() {
        return idEstadoResidemcial;
    }

    public void setIdEstadoResidemcial(Integer idEstadoResidemcial) {
        this.idEstadoResidemcial = idEstadoResidemcial;
    }

    public Integer getIdEstadoComercial() {
        return idEstadoComercial;
    }

    public void setIdEstadoComercial(Integer idEstadoComercial) {
        this.idEstadoComercial = idEstadoComercial;
    }

    public List<Municipio> getListaMunicipioResidencial() {
        return listaMunicipioResidencial;
    }

    public void setListaMunicipioResidencial(List<Municipio> listaMunicipioResidencial) {
        this.listaMunicipioResidencial = listaMunicipioResidencial;
    }

    public List<Municipio> getListaMunicipioComercial() {
        return listaMunicipioComercial;
    }

    public void setListaMunicipioComercial(List<Municipio> listaMunicipioComercial) {
        this.listaMunicipioComercial = listaMunicipioComercial;
    }

    public List<Estado> getListaEstado() {
        return listaEstado;
    }

    public void setListaEstado(List<Estado> listaEstado) {
        this.listaEstado = listaEstado;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public String getLabelAcaoBotao() {
        return labelAcaoBotao;
    }

    public void setLabelAcaoBotao(String labelAcaoBotao) {
        this.labelAcaoBotao = labelAcaoBotao;
    }

    public String getSenha1() {
        return senha1;
    }

    public void setSenha1(String senha1) {
        this.senha1 = senha1;
    }

    public String getSenha2() {
        return senha2;
    }

    public void setSenha2(String senha2) {
        this.senha2 = senha2;
    }

    public Integer getIdMunicipioResidencial() {
        return idMunicipioResidencial;
    }

    public void setIdMunicipioResidencial(Integer idMunicipioResidencial) {
        this.idMunicipioResidencial = idMunicipioResidencial;
    }

    public Integer getIdMunicipioComercial() {
        return idMunicipioComercial;
    }

    public void setIdMunicipioComercial(Integer idMunicipioComercial) {
        this.idMunicipioComercial = idMunicipioComercial;
    }

    public List<Cliente> getListaCliente() {
        if(this.listaCliente == null) {
            try {
                this.listaCliente = new ClienteBO().findAll();
            } catch (Exception e) {
                JsfUtil.mensagemErro(e);
                e.printStackTrace(System.err);
            }
        }
        return listaCliente;
    }

    public void setListaCliente(List<Cliente> listaCliente) {
        this.listaCliente = listaCliente;
    }
    
}

Qualquer ajuda é muito bem vinda, desde ja muito obrigado…

Ja tentou trocar seu @ViewScoped pelo @SessionScoped em seu bean?

Valeu amigo pela ajuda, mas nem tentei utilizar sua dica, ja consegui resolver, na tela de cadastro o componente textarea ligado a observacao, era um dos erros, o campo do bean é byte[] e naum string e tambem se o endereco estive nullo o objeto naum erra instanciado para ser usado dando um new no objeto resolveu, valeu pela dica ate mais