Ola, estou com um problema na hora de pegar os dados da minha linha selecionada na dataTable.
Tenho um botão de editar em cada linha, quando clico dou um show em uma dialog que me tras as combos com os dados preenchidos, o problema é que se eu fizer uma busca e clicar no btn de editar esta me mostrando o ultimo registro que cliquei antes de efetuar a busca.
Segue codigos:
user.xhtml
<p:dataTable id="tabela_user" var="user" value="#{userController.listarUsers}" rows="20" paginator="true"
emptyMessage="Nenhum registro encontrado">
<p:column sortBy="#{user.name}" filterBy="#{user.name}">
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{user.name}" />
</p:column>
<p:column sortBy="#{user.login}" filterBy="#{user.login}">
<f:facet name="header">
<h:outputText value="Login" />
</f:facet>
<h:outputText value="#{user.login}" />
</p:column>
<p:column>
<p:commandButton
actionListener="#{userController.prepararAlterarUser}"
image="ui-icon-pencil" update="infosUser"
oncomplete="dialogGerUser.show()" />
<p:commandButton
actionListener="#{userController.deleteUser}"
image="ui-icon-trash" />
</p:column>
</p:dataTable>
UserController.java
@ManagedBean
@SessionScoped
public class UserController implements Serializable {
private User user;
private DataModel listaUsers;
public DataModel getListarUsers() throws Exception {
List<User> lista = new UserDaoImp().list();
listaUsers = new ListDataModel(lista);
return listaUsers;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public void prepararAdicionarUser(ActionEvent actionEvent) {
user = new User();
}
public void prepararLoginUser(ActionEvent actionEvent) {
user = new User();
}
public void prepararAlterarUser(ActionEvent actionEvent) {
user = (User) (listaUsers.getRowData());
}
}
UserDaoImp.java
public class UserDaoImp implements UserDao{
public UserDaoImp() throws Exception{
}
public List<User> list(){
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
List lista = session.createQuery("from User order by name").list();
t.commit();
return lista;
}
............
}
Espero ter ajuda de vocês
Aguardo
