Problema com Prime Faces

Bom dia caros amigos do GUJ, estou enrolado aqui com um problema aparentemente simples. Desenvolvo uma aplicação usando JSF2 e utilizo a especificação PrimeFaces 2 junto com Mojarra 2. Um cenário comum seria passar um objeto que representa uma entidade do banco entre as requisições, por exemplo quando seleciono uma linha de uma tabela e clico no botão atualizar. Na página de atualização os dados devem estar ligados diretamente nos componentes de tela, conforme foram apresentados na dataTable.

Já tentei usando <h:inputHidden name=“a” value="#{Bean1.x}" binding="{Bean2.x}"> mas a propriedade binding não funcionou, coloquei tudo certinho dentro da tag <h:form> …
tabém tive uma dúvida neste ponto, inputHidden suporta POJOS ou apenas tipos nativos como, Integer, String?

Depois tentei um alternativa do Prime usando o <p:commandButton…>, vou postar a tela toda:

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.prime.com.tr/ui">

<h:head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<h:outputStylesheet library="css" name="estilo.css" />
</h:head>

<h:body>
<div id="telaFunc">
<h:form id="ListUsuario" prependId="false">

<h:panelGrid columns="4">
	    <h:outputLabel id="olUnidade" value="Unidade:" for="cboUnidade" styleClass="lbCampos"/>
		<h:selectOneMenu id ="cboUnidade" value="#{FuncionarioBean.funcionario.estruturaOrganizacional.idUnidade}" >
			<f:selectItem  itemValue="0" itemLabel="Todos" />
			<f:selectItems id="selitUnidade" value="#{FuncionarioBean.listaSetores}" var="lista" itemLabel="#{lista.nmSglUnidade}" itemValue="#{lista.idUnidade}" />
		</h:selectOneMenu>

	    <h:outputLabel id="lblTipoUsuario" value="Tipo Usuário:" styleClass="lbCampos" for="cboTipoUsuario"/>
		<h:selectOneMenu value="#{FuncionarioBean.tipoUsuario}" id="cboTipoUsuario">
			<f:selectItem itemValue="Todos" itemLabel="Todos" />
			<f:selectItem itemValue="A" itemLabel="Administrador" />
			<f:selectItem itemValue="D" itemLabel="Diretor" />
			<f:selectItem itemValue="G" itemLabel="Gerente de Divisao" />
			<f:selectItem itemValue="F" itemLabel="Funcionario" />
			<f:selectItem itemValue="E" itemLabel="Estagiario" />
		</h:selectOneMenu>

            <h:outputLabel value="Nome:" for="txtUsuario" styleClass="lbCampos"></h:outputLabel>  
            <h:inputText id="txtUsuario" value="#{FuncionarioBean.funcionario.nmFuncionario}"/> 	    

	    <h:outputLabel id="olUsuario" value="Usuário:" styleClass="lbCampos" />
	    <h:inputText id="login" value="#{FuncionarioBean.login}" />
                       
  
 	    <h:outputLabel value="CPF:" for="txtCPF" styleClass="lbCampos"></h:outputLabel>  
            <h:inputText id="txtCPF" value="#{FuncionarioBean.funcionario.nrCpf}"/>  
          
        
        <p:commandButton id="cbBuscar"  action="#{FuncionarioBean.buscaFuncionarios}" 
	     styleClass="cbForm" image="ui-icon-search" />
	    
	    <h:outputText></h:outputText><h:commandButton id="cbNovoUsuario" value="Novo Usuário" 
	    action="#{FuncionarioBean.redirectCadastroNovoFuncionario}" styleClass="cbForm" />
		
		<p:commandButton id="cbLimpar"  type="reset" action="#{FuncionarioBean.limparCampos}" 
		styleClass="cbForm" update="tbbuscaFuncionarios" image="ui-icon-clean" />
</h:panelGrid>
</h:form>            
  <p></p>
 <h:form id="formtable" width="500">
   <p:dataTable id="tbbuscaFuncionarios" 
    		   	value="#{FuncionarioBean.funcionarios}" 
    			var="f"       
    			border="1" 
    			selection="#{FuncionarioBean.funcionario}" 
				selectionMode="single"
    			onRowSelectComplete="FunDialog.show()" 
				onRowSelectUpdate="display"  
                scrollable="true" width="500">           
               
	      <p:column id="col01" headerText="Nome" style="max-width:90px">  
	         	<h:outputText value="#{f.nmFuncionario}" />  
	      </p:column>  
	      
	       <p:column id="col02" headerText="Usuário"  style="max-width:90px">    
	         	<h:outputText value="#{f.usuario.nmLogin}" />  
	      </p:column>  
	  
	       <p:column id="col03" headerText="Email"  style="min-width:40px;max-width:90px">   
	         	<h:outputText value="#{f.nmEmail}" />  
	      </p:column>  
	      	  
	      <p:column id="col04" headerText="Crachá"  style="max-width:90px">     
         		<h:outputText value="#{f.idCracha}" />  
	      </p:column>  
	
	      <p:column id="col05" headerText="Telefone"  style="max-width:90px">     
	         	<h:outputText value="#{f.nmFone}" />  
	      </p:column>  
	      
	      <p:column id="col06" headerText="Matricula"  style="max-width:90px">     
	         	<h:outputText value="#{f.nmMatFuncionario}" />  
	      </p:column>  
	      
	      <p:column id="col07" headerText="CPF"  style="max-width:90px">    
	         	<h:outputText value="#{f.nrCpf}" />  
	      </p:column> 
	      
//Aqui estah onde interessa
	      <p:column id="col08" headerText="Edit" style="max-width:90px">   
	      <p:commandButton id="btEdit" image="ui-icon-tag" actionListener="FuncionarioBean.atualizaFuncionarioAction" action="#{FuncionarioBean.redirectAtualizaFuncionario}"             ajax="false" >
	      		 <f:attribute name="funcionario" value="#{f}"/>
	      </p:commandButton> 
	      </p:column>
	           
	      <p:column id="col09" headerText="Delete"  style="max-width:90px">   
	      	<p:commandButton id="tbExcluir" image="ui-icon-close" actionListener="#{UsuarioBean.doModificaStatus}" ajax="false"/>
	      </p:column>
    
   </p:dataTable>
   
    <p:dialog header="Detalhes Funcionário" widgetVar="FunDialog" resizable="false"  
               width="400" showEffect="explode" hideEffect="explode">  
   
         <h:panelGrid id="display" columns="2" cellpadding="4">  
  
             <h:outputText value="Nome:" />  
             <h:outputText value="#{FuncionarioBean.funcionario.nmFuncionario}"/>  
   
             <h:outputText value="Usuário:" />  
             <h:outputText value="#{FuncionarioBean.funcionario.usuario.nmLogin}"/>  

             <h:outputText value="Email:" />  
             <h:outputText value="#{FuncionarioBean.funcionario.nmEmail}"/>  	   
	      
             <h:outputText value="Crachá:" />  
             <h:outputText value="#{FuncionarioBean.funcionario.idCracha}"/>  	   
      	  
             <h:outputText value="Telefone:" />  
             <h:outputText value="#{FuncionarioBean.funcionario.nmFone}"/>  	   
	
             <h:outputText value="Matricula:" />  
             <h:outputText value="#{FuncionarioBean.funcionario.nmMatFuncionario}"/>  	   
	
	         <h:outputText value="CPF:" />  
             <h:outputText value="#{FuncionarioBean.funcionario.nrCpf}"/>  	         
      
         </h:panelGrid>  
     </p:dialog>  
</h:form>  
</div>
</h:body>
</html>

No meu bean que controla a tela de atualzação qdo se clica no botão editar da dataTable, existe o mesmo objeto funcionario, logo usando actionListener tentei atualizar a referência dele para o objeto funcionario que foi passado via <f:atributte…> na tela que postei:

No mBean:

public String redirectAtualizaFuncionario(){
		return "/view/atualizarFuncionario.xhtml?faces-redirect=true";
	}
	
	public void atualizaFuncionarioAction(ActionEvent evt){
		this.funcionario = (Funcionario)evt.getComponent().getAttributes().get("funcionario");
	}

Apoś debuggar notei q ele não me mostra quando o ActionEvent é disparado…

Neste cenário, eu só queria mandar meu objeto selecionado para preencher a tela de atualização, alguém pode me ajudar?

Um abraço a todos…

Pessoal, ficou assim minha solução:

<p:column id="col09" headerText="Delete"  style="max-width:90px">   
	      	<p:commandButton id="tbExcluir" image="ui-icon-close" action="#{UsuarioBean.doModificaStatus(f)}"/>
</p:column>

No MBean

public String doModificaStatus(Funcionario f){
	//perform action

}

A grande sacada que depois de muito pesquisar descobrí é que eu posso passar parâmetros para o método que executa determinada action…