Estou criando um CRUD com jsf a partir do exemplo da k19. Mas quando vou alterar ou remover não consigo pegar o “id” do usuário.
UserBean
@ManagedBean
public class UsersBean extends AbstractBean{
private Users user = new Users();
private List<Users> users;
public void adicionar(){
EntityManager manager = this.getManager();
UsersRepository repository = new UsersRepository(manager);
if(this.user.getIdUser() == null){
repository.adicionar(this.user);
}else {
repository.atualizar(this.user);
}
this.user = new Users();
this.users = null;
}
public void prepararAlteracao(){
Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
Long id = Long.parseLong(params.get("id"));
EntityManager manager = this.getManager();
UsersRepository repository = new UsersRepository(manager);
this.user = repository.procurar(id);
}
public void remover(){
Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
Long id = Long.parseLong(params.get("id"));
EntityManager manager = this.getManager();
UsersRepository repository = new UsersRepository(manager);
repository.remover(id);
this.users = null;
}
public List<Users> getUsers(){
if(this.users == null){
EntityManager manager = this.getManager();
UsersRepository repository = new UsersRepository(manager);
this.users = repository.listar();
}
return this.users;
}
public Users getUser() {
return user;
}
public void setUser(Users user) {
this.user = user;
}
<h:panelGroup >
<h:dataTable id="tabela" value="#{usersBean.users}"
var="user" styleClass="dados" rowClasses="par, impar">
<h:column>
<c:facet name="header">
<h:outputText value="ID" />
</c:facet>
#{user.idUser}
</h:column>
<h:column>
<c:facet name="header">
<h:outputText value="Nome" />
</c:facet>
#{user.cdUser}
</h:column>
<h:column>
<c:facet name="header">
<h:outputText value="Email" />
</c:facet>
#{user.cdEmail}
</h:column>
<h:column>
<c:facet name="header">
<h:outputText value="Alterar" />
</c:facet>
<c:ajax event="click" render="@form" listener="#{usersBean.prepararAlteracao}">
<h:commandLink name="id" value="#{user.idUser}" >Alterar</h:commandLink>
</c:ajax>
</h:column>
<h:column>
<c:facet name="header">
<h:outputText value="Remover" />
</c:facet>
<c:ajax event="click" render="@form" listener="#{usersBean.remover}">
<h:commandLink name="id" value="#{user.idUser}" >Alterar</h:commandLink>
</c:ajax>
</h:column>
</h:dataTable>
</h:panelGroup>
Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
Long id = Long.parseLong(params.get("id"));
No método prepararAuteracao: o params.get(“id”) esta vindo null
Alguém pode me ajudar