JSF DataTable (Tomahawk)

Bom dia Pessoal!

Começei a usar o JSP a pouco tempo (tb programo a pouco tempo, então não se irritem se a dúvida for besta :roll: )

Tenho um Datatable que está me retornando os usuários do sistema. Eu coloquei um commandLink onde eu preciso que quando a pessoa clique nele, preencha os meus campos de cadastro para a edição do usuário daquela linha. O que está acontecendo é que em qq linha que eu clique no commandlink, me é retornado o último registro do Datatable.

Aqui está o meu DataTable :

Código:

<t:dataTable var="usuario" value="#{usuarioManaged.usuarios}"
                   binding="#{usuarioManaged.dataTable}"
                   rowClasses="bg_branco,bg_amarelo"
                   headerClass="headerclass"
                    styleClass="tabela"
                    cellspacing="0"
                             cellpadding="4"
                             preserveDataModel="true">
                     
            
               <h:outputText value="Lista de Usuários Cadastrados" styleClass="cabecalho"/>
                     
            <h:column>
               <f:facet name="header">
                  <h:outputText value="nomeUsuario" />
               </f:facet>
               <h:outputText value="#{usuario.nomeUsuario}" />
            </h:column>
            <h:column>
               <f:facet name="header">
                  <h:outputText value="Nome" />
               </f:facet>
               <h:outputText value="#{usuario.nome}" />
            </h:column>
            <h:column>
               <f:facet name="header">
                  <h:outputText value="Categoria" />
               </f:facet>
               <h:outputText value="#{usuario.categoria}" />
            </h:column>
            <h:column>
               <f:facet name="header">
                  <h:outputText value="" />
               </f:facet>
               <h:commandLink action="#{usuarioManaged.editar}">
                  <t:updateActionListener property="#{usuarioManaged.usuario}" value="#{usuario}" />
                  <h:outputText value="Editar" />
               </h:commandLink>
            </h:column>
</t:dataTable>

Meu Backing Bean está assim:

Código:

public class UsuarioManaged {
   
   public Usuario usuario = new Usuario();
   public GerenciadorUsuarios gerenciadorUsuarioManaged ;
   public HtmlDataTable dataTable;
   
   public UsuarioManaged(){
   
   }
//--------------------------------------------------------------------------
   
//--------------------------------------------------------------------------   
   public void setUsuario(Usuario usuario) {
      this.usuario = usuario;
   }
   public Usuario getUsuario() {
      return usuario;
   }
//--------------------------------------------------------------------------
   
//--------------------------------------------------------------------------      
   public void setGerenciadorUsuarioManaged(
         GerenciadorUsuarios gerenciadorUsuarioManaged) {
      this.gerenciadorUsuarioManaged = gerenciadorUsuarioManaged;
   }
   
   public GerenciadorUsuarios getGerenciadorUsuarioManaged() {
      return gerenciadorUsuarioManaged;
   }
//--------------------------------------------------------------------------
   
//--------------------------------------------------------------------------
   public List getUsuarios(){
          return gerenciadorUsuarioManaged.getUsuarios();
     
   }
   
   public String salvarOuAlterarUsuario(){
      gerenciadorUsuarioManaged.criarOuAlterarUsuario(usuario);
      this.setUsuario(new Usuario());
      return null;
   }
   
   public String apagarUsuario(){
      gerenciadorUsuarioManaged.apagarUsuario(usuario);
      return null;
   }
   
   public String editar() {
           return null;
    }

   public HtmlDataTable getDataTable() {
          return dataTable;
   }
   public void setDataTable(HtmlDataTable dataTable) {
         this.dataTable = dataTable;
}
   
//--------------------------------------------------------------------------   


   
}

Eu percebi que na verdade quando eu clico no meu Editar, a página é submetida novamente e o objeto que é mostrado na tela pra eu alterar é o último objeto do meu List de usuários que é pego pelo método getUsuarios. Eu imaginei que quando eu clicasse no link, ele me retornaria o objeto referente àquela linha…

Alguém sabe como posso resolver isso ?

Obrigado!!

Douglas Grava

Obs: Pra fazer isso eu utilizei um exemplo que peguei na net… por isso que eu usei o DataTable do Tomahawk… se houver uma solução usando o DataTable da biblioteca HTML do JSP mesmo pra mim tanto faz… :smiley:

Aí Pessoal, já resolvi esse problema!!

Mudei algumas coisas e usei o h:dataTable em vez do t:dataTable…
O principal da solução foi implementar um DataModel…

Na verdade eu estava comendo bola… nada como ser um iniciante pra cometer as burradas!! :lol: Mas é assim que se aprende! :thumbup:

Abraços!

Douglas Grava