PrimeFaces 3.5 + dataTable + Alterar Registro

Olá Amigos.
Estou com um problema no <p:dataTable> do PrimeFaces 3.5
Tenho um CRUD básico, quando listo meus registro no <p:dataTable> tenho um botão ALTERAR e EXCLUIR.
O Excluir funciona normalmente, porém o ALTERAR abre meu <p:dialog> sempre com o primeiro registro gravado na tabela.
Já fiz de tudo e não consegui resolver. Gostaria da Ajuda dos Amigos pois as vezes é algo simples que estou esquecendo.
Desde já muito Obrigado.

No botão Alterar no usuarios.xhtml:

 <p:commandButton actionListener="#{usuarioController.prepararAlterarUsuario}" value="Alterar" image="ui-icon-tag" update=":dadosTabela:tabela" oncomplete="dialogUsuarios.show()" />  

Na minha classe controller:

public void prepararAlterarUsuario(ActionEvent actionEvent) {       
        usuario = (Usuario) (listaUsuarios.getRowData());  
    }  

UsuarioController.java

package Controller;

import Dao.UsuarioDao;
import Dao.UsuarioDaoImp;
import Model.Usuario;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;

@ManagedBean
@SessionScoped
public class UsuarioController implements Serializable {

    private Usuario usuario;
    private transient DataModel listaUsuarios;

    // Lista os Usuarios Cadastrados
     public DataModel getListarUsuarios() {
        List<Usuario> lista = new UsuarioDaoImp().list();
        listaUsuarios = new ListDataModel(lista);
        return listaUsuarios;
    }      
    
   // Cadastrar & Altera os Usuários  ////////////////////////////////////////
    public void prepararAdicionarUsuario(ActionEvent actionEvent) {
    usuario = new Usuario();
    }  
    
    public void prepararAlterarUsuario(ActionEvent actionEvent) {     
        usuario = (Usuario) (listaUsuarios.getRowData());
    }    
    
    public void adicionarUsuario(ActionEvent actionEvent) {
        UsuarioDao dao = new UsuarioDaoImp();            
        dao.salvar(usuario);
    }
    
    
    ///////////////////////////////////////////////////////////////////////////
    
   // Excluir Usuarios
    public void excluirUsuarios(ActionEvent actionEvent) {
      Usuario usuarioTemp = (Usuario) (listaUsuarios.getRowData());
      UsuarioDao dao = new UsuarioDaoImp();
      dao.apagar(usuarioTemp);
      usuario = new Usuario();  
    }
    
    public UsuarioController() {
        usuario = new Usuario();
        SecurityContext context = SecurityContextHolder.getContext();
        if (context instanceof SecurityContext){
            Authentication authentication = context.getAuthentication();
            if (authentication instanceof Authentication){
                usuario.setLogin(((User)authentication.getPrincipal()).getUsername());
            }
        }
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
    
}

usuarios.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!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:h="http://java.sun.com/jsf/html"  
      xmlns:f="http://java.sun.com/jsf/core"  
      xmlns:p="http://primefaces.org/ui"  
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
      xmlns:sec="http://www.springframework.org/security/facelets/tags"> 
    <h:head>
        <title>Financeiro WEB</title>             
    </h:head>
    <h:body>
        <p:panel style="width: 700px;margin: auto;" header="Sistema Financeiro WEB"
                 footer="Suporte Oficial - http://suporteoficial.com.br/contato/ Fone: (47) 9914-2901">

            <h:form>
                <p:menubar >
                    <p:submenu label="Configurações" icon="ui-icon ui-icon-circle-arrow-s" rendered="#{sec:ifAnyGranted ('ADMINISTRADOR')}"> 
                        <p:menuitem value="Usuários" rendered="#{sec:ifAnyGranted
                                                                 ('ADMINISTRADOR')}" /> 
                    </p:submenu> 
                    <p:submenu label="Cadastro" icon="ui-icon ui-icon-circle-arrow-s"
                               rendered="#{sec:ifAnyGranted('OPERADOR,ADMINISTRADOR')}"  >
                        <p:menuitem value="Cliente" rendered="#{sec:ifAnyGranted
                                                                ('OPERADOR,ADMINISTRADOR')}" />  
                        <p:menuitem value="Fornecedores" rendered="#{sec:ifAnyGranted
                                                                     ('OPERADOR,ADMINISTRADOR')}" />                          
                    </p:submenu>
                    <p:submenu label="Relatório" icon="ui-icon ui-icon-circle-arrow-s" 
                               rendered="#{sec:ifAnyGranted('OPERADOR,ADMINISTRADOR')}">                       
                    </p:submenu>                    
                </p:menubar>                        
            </h:form>
            <br/>           
            <h:form prependId="false">
                <p:commandButton style="width: 110px" value="Novo" actionListener="#{usuarioController.prepararAdicionarUsuario}" image="ui-icon-document"  update=":adicionar:infoUsuario" oncomplete="dialogUsuarios.show()"/>   
            </h:form>        

            <p:dialog header="Cadastro de Usuários" widgetVar="dialogUsuarios"  resizable="false" modal="true" showEffect="slide" width="500">             

                <h:form prependId="false" id="adicionar" >          
                    <h:panelGrid id="infoUsuario" columns="2" style="margin-bottom:10px">
                        <h:outputLabel for="login" value="Usuário:"  />
                        <h:inputText id="login" value="#{usuarioController.usuario.login}" size="20"/>                    

                        <h:outputLabel for="senha" value="Senha: "  />
                        <h:inputSecret  id="senha" value="#{usuarioController.usuario.senha}" size="20" />  

                        <h:outputLabel for="ativo" value="Ativo:" />
                        <h:selectOneMenu id="ativo" value="#{usuarioController.usuario.ativo}">
                            <f:selectItem itemLabel="Não" itemValue="0"/> 
                            <f:selectItem itemLabel="Sim" itemValue="1"/>                                              
                        </h:selectOneMenu>
                        <p:commandButton update=":dadosTabela:tabela" oncomplete="dialogUsuarios.hide();" actionListener="#{usuarioController.adicionarUsuario}" value="Gravar" />  
                    </h:panelGrid>
                </h:form>
            </p:dialog>           

            <br/>
            <h:form prependId="false" id="dadosTabela">
                <p:dataTable id="tabela" var="usuario" value="#{usuarioController.listarUsuarios}" emptyMessage="Sem Registros...">
                    <p:column style="text-align: center">
                        <f:facet name="header">
                            <h:outputText value="Login"/>
                        </f:facet>
                        <h:outputText  value="#{usuario.login}"/>
                    </p:column>  
                    <p:column style="text-align: center">
                        <f:facet name="header">
                            <h:outputText value=""/>
                        </f:facet>
                        <p:commandButton actionListener="#{usuarioController.prepararAlterarUsuario}" value="Alterar" image="ui-icon-tag" update=":dadosTabela:tabela" oncomplete="dialogUsuarios.show()" />
                    </p:column>
                    <p:column style="text-align: center">
                        <f:facet name="header">
                            <h:outputText value=""/>
                        </f:facet>
                        <p:commandButton actionListener="#{usuarioController.excluirUsuarios}" value="Excluir" image="ui-icon-trash"  update=":dadosTabela:tabela"/>

                    </p:column>
                </p:dataTable> 
            </h:form>
        </p:panel>
    </h:body>
</html>