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.
@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;
}
............
}
é isso mesmo que deveria acontecer kkk.
Para que isso funcione, você tem que trabalhar de 2 formas, com o select do datatable realizando a função EM CIMA da linha, ou colocando um f:setPropertyActionListener com o id da linha que foi criada para ser capturada no momento em que for clicada:
Fiz a alteração seguindo o exemplo fiz vários testes mas ainda tenho um problema, talvez esteja esquecendo algo.
Quando clico no botão para alterar esta entrando no setSelectedUser e setando a variável perfeitamente, mas, quando a dialog aparece vem tudo em branco.
Criei dentro do meu controller o selectedUser
private User selectedUser;
public User getSelectedUser() {
return selectedUser;
}
public void setSelectedUser(User selectedUser) {
this.selectedUser = selectedUser;
}