Erro com datatable com row single selection

quando seleciono o cliente e dou editar ele nao entra no metodo ‘carregarEditarF()’ , o getselectClienteF esta nulo…

no bean esta

private cliente selectClienteF

get e sets.

<!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: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"
      xmlns:sec="http://www.springframework.org/security/tags">
    <ui:composition template="../../layout/padrao.xhtml">
	<ui:define name="title">Cadastro de Clientes</ui:define>
	<ui:define name="conteudo">
          <h:body style="background-color: white" >
               
               
              <h:form id="principal">
                  <br/> 
                  <div id="divTab"  >
                      <p:tabView id="tabView" 
                                 style="width:98%;height: 85%; font-size: small;">
                         

                          <p:tab id="tab3" title="Pesquisar Clientes"> 
                              <p:tabView >
                                  <p:tab title="Cliente Pesssoa Fisico">
                                      <p:dataTable id="tableFisico" var="pf" value="#{clienteBean.listClienteF}"
                                                   rowKey="#{pf.idCliente}"
                                                   selection="#{clienteBean.selectClienteF}" selectionMode="single" 
                                                   emptyMessage="Nenhum Cliente F. Encontrado" rows="10" paginator="true"
                                                   style="width: 80%; margin-left: 150px">

                                          <f:facet name="header">  
                                              <h:outputText value="Tabela de clientes de Pessoas Fisica" />  
                                          </f:facet> 

                                          <p:column id="cpf" filterBy="#{pf.cpf}" style="width: 200px"
                                                    headerText="CPF" filterMatchMode="contains" >  
                                              <h:outputText value="#{pf.cpf}" />  
                                          </p:column>   

                                          <p:column id="nome" style="width: 200px" headerText="Nome">  
                                              <h:outputText value="#{pf.nome}" />  
                                          </p:column>

                                          <f:facet name="footer">  
                                              <p:commandButton id="butUpClienteF" value="Editar" 
                                                               oncomplete="atualizaDialogCliente.show()"
                                                               actionListener="#{clienteBean.carregarEditarF()}"
                                                               update=":principal:atualizaCliente"/>
                                              
                                              <p:commandButton id="butDelClienteF" value="Deletar" style="margin-left: 5px"
                                                               actionListener="#{clienteBean.deletarClienteF()}"
                                                               oncomplete="dialogCliente.show()"
                                                               update=":dialog"/>
                                          </f:facet>

                                      </p:dataTable>
                                  </p:tab>
                                  
                              </p:tabView>
                          </p:tab>
                      </p:tabView>
                  </div>

                  
                  <p:dialog id="atualizaCliente" header="Atualiza Cliente" widgetVar="atualizaDialogCliente"
                            resizable="false" width="700" height="410" showEffect="explode" 
                            hideEffect="explode" modal="true" closable="true"
                            style="font-size: small" >

                      <h:panelGrid columns="4" cellpadding="3" >
                          <h:outputLabel value="CPF:"/>
                          <p:inputMask  mask="999.999.999-99" size="17"
                                        value="#{clienteBean.cpf}" 
                                        disabled="#{clienteBean.flagDf}"  />
                          <h:outputLabel value="Nome:"/>
                          <p:inputText  size="30" 
                                        value="#{clienteBean.nome}"
                                        disabled="#{clienteBean.flagDf}"
                                        onkeyup="strToUpper(this);"/>
                          <h:outputLabel value="CNPJ:"/>
                          <p:inputMask  mask="99.999.999/9999-99" size="19" 
                                        value="#{clienteBean.cnpj}"
                                        disabled="#{clienteBean.flagDpj}" />
                          <h:outputLabel value="Razão Social:" />
                          <p:inputText  size="30" value="#{clienteBean.razaoSocial}"
                                        disabled="#{clienteBean.flagDpj}"
                                        onkeyup="strToUpper(this);"/>
                      </h:panelGrid>
                      <h:panelGrid columns="4" cellpadding="2">
                          <h:outputLabel value="Endereço"/>
                          <p:inputText size="30" value="#{clienteBean.endereco}"
                                       onkeyup="strToUpper(this);"/>
                          <h:outputLabel value="Nº"/>
                          <p:inputText size="10" value="#{clienteBean.numero}"
                                       onkeyup="strToUpper(this);"/>
                          <h:outputLabel value="Complemento"/>
                          <p:inputText size="30" value="#{clienteBean.complemento}"
                                       onkeyup="strToUpper(this);"/>
                          <h:outputLabel value="CEP:"/>
                          <p:inputMask mask="99999-999" size="10" value="#{clienteBean.cep}"/>
                          <h:outputLabel value="Bairro"/>
                          <p:inputText value="#{clienteBean.bairro}"
                                       onkeyup="strToUpper(this);"/>
                          <h:outputLabel value="Cidade"/>
                          <p:inputText value="#{clienteBean.cidade}"
                                       onkeyup="strToUpper(this);"/>
                          <h:outputLabel value="Estado"/>
                          <p:inputText value="#{clienteBean.estado}"
                                       onkeyup="strToUpper(this);"/>
                          <h:outputLabel value="Pais"/>
                         <!-- <p:inputText value="#{clienteBean.pais}"
                                       onkeyup="strToUpper(this);"/> -->


                      </h:panelGrid>
                      <h:panelGrid columns="4" cellpadding="2">
                          <h:outputLabel value="Telefone"/>
                          <p:inputMask mask="(99) 9999-9999" size="16" 
                                       value="#{clienteBean.telefone}"/>
                          <h:outputLabel value="Email:"/>
                          <p:inputText size="20" value="#{clienteBean.email}" style="width:200px;"/>

                      </h:panelGrid>
                      <h:panelGrid columns="2" cellpadding="3">
                          <h:outputLabel value="Contato:"/>
                          <p:inputText size="35" value="#{clienteBean.contato}"
                                       onkeyup="strToUpper(this);"/>
                          <h:outputLabel value="Observação"/>
                          <p:inputTextarea style="width: 300px;height: 50px" 
                                           value="#{clienteBean.observacao}"
                                           onkeyup="strToUpper(this);"/>
                      </h:panelGrid>
                      <br/><br/>
                      <p:commandButton value="Atualizar" style="margin-left: 250px"
                                       type="submit" ajax="false"
                                       actionListener="#{clienteBean.updateCliente()}"/>
                  </p:dialog>



                  <p:blockUI block="principal:tabView:j_idt85" 
                             trigger="principal:tabView:j_idt85:tableJuridico,principal:tabView:j_idt85:tableFisico">  
                      <p:graphicImage id="ajax-load2" url="../../imagens/loading.gif" />  
                  </p:blockUI>


              </h:form>

                        
                </h:body>
          
        </ui:define>
    </ui:composition>
</html>

Pelo que eu entendi do seu código, você colocou um botão de editar no rodapé da tabela… e quer que ele edite um dos registros da tabela, sem informar qual deles…

Você deve modificar seu código e colocar o botão em cada linha da tabela, para poder passar para o método qual objeto será editado.

isso mesmo esta no rodape, ao selecionar a linha e clicar no editar ele chama esse metodo carregarEditarF()

 public void carregarEditarF() {
    
       if (getSelectClienteF() != null) {
           nome = getSelectClienteF().getNome();
           cpf = getSelectClienteF().getCpf();
           cnpj = "";
           razaoSocial = "";
           endereco = getSelectClienteF().getEndereco();
           numero = getSelectClienteF().getNumero();
           complemento = getSelectClienteF().getComplemento();
           bairro = getSelectClienteF().getBairro();
           cidade = getSelectClienteF().getCidade();
           estado = getSelectClienteF().getEstado();
           telefone = getSelectClienteF().getTelefone();
          // pais = getSelectClienteF().getPais();
           observacao = getSelectClienteF().getObs();
           cep = getSelectClienteF().getCep();
           email = getSelectClienteF().getEmail();
           flagDpj = true;
           session.setAttribute("id", getSelectClienteF().getIdCliente());
       }
   
   }

Agora entendi… Você não está caindo no velho problema do Primefaces não atualizar se você apontar o update para o dialog? Experimente colocar um outPutPanel dentro do dialog e mandar atualizar o painel em vez do dialog, como é feito no showcase.

http://www.primefaces.org/showcase/ui/datatableRowSelectionSingle.jsf