Pessoal,
Já procurei exemplos prontos, códigos mastigados, mas estou tendo o mesmo problema.
Estou tentando entender pq qdo clico num botao editar ou deletar na minha linhda do dataTable ele sempre pega o primeiro item da tabela.
Fiz um crud numa pagina só pra estudar jsf com jpa e ajax, porém não consigo entender pq qdo chamo esses dois metodos(alterar e delete) ele nao pega a linha correta.
Se alguém puder ajudar ficarei muito grato.
Minha pagina JSP
//antes desta tabela tem dois campos q servem para adicionar e editar e pesquisar
<rich:dataTable border="1" value="#{usuarioBean.all}"
var="currentUser" id="table">
<h:column id="column1">
<h:outputText value="#{currentUser.idUsuario}"></h:outputText>
<f:facet name="header">
<h:outputText value="id"></h:outputText>
</f:facet>
</h:column>
<h:column id="column2">
<h:outputText value="#{currentUser.nmUsuario}"></h:outputText>
<f:facet name="header">
<h:outputText value="name"></h:outputText>
</f:facet>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Delete" />
</f:facet>
<h:commandButton action="#{usuarioBean.delete}" value="Delete"
onclick="javascript:return(confirm('Delete this User ?'))" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Edit" />
</f:facet>
<h:commandButton action="#{usuarioBean.alterar}" value="Edit" />
<h:commandLink action="#{usuarioBean.alterar}" id="editarLink">
<h:outputText id="editarLinkText" value="editar" />
<f:param id="id" name="id"
value="#{currentUser.idUsuario}" />
</h:commandLink>
</h:column>
</rich:dataTable>
Meu ManagedBean
public String alterar() {
TabUsuario user = (TabUsuario) this.getModel().getRowData();
name = user.getNmUsuario();
id = user.getIdUsuario();
return "success";
}
public String delete() {
UsuarioDAO dao = getUsuarioDAO();
// deveria pegar a linha q eu cliquei mas pega sempre a linha 0(primeira linha)
TabUsuario usuario = (TabUsuario) model.getRowData();
dao.removeUser(usuario);
return "success";//retorna sempre pra mesma pagina
}