Fala galera, estou treinando JSF 2.0 e gostaria de saber se tem como eu passar o objeto que está na linha do meu datatable para um método de edição?
Mais ou meno isso:
package s2.bean;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import s2.dao.CdDAO;
import s2.model.Cd;
@ManagedBean(name = "ListaCdBean")
@SessionScoped
public class ListaCdBean {
public List<Cd> getAll() {
try {
return CdDAO.getAll();
} catch (Exception ex) {
Logger.getLogger(CdBean.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
public String EditCd(Cd cd){
CdBean cdBean = new CdBean();
cdBean.setCd(cd);
return "cd";
}
}
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<f:view>
<h:form>
<h:dataTable value="#{ListaCdBean.all}" var="cd">
<h:column>
<h:form>
<h:commandLink action="#{ListaCdBean.EditCd}" value="Editar">
<f:param name="cd" value="cd"/>
<f:ajax execute="@this" render="@form"/>
</h:commandLink>
</h:form>
</h:column>
<h:column>
<f:facet name="header">
Cantor
</f:facet>
#{cd.cantor}
</h:column>
<h:column>
<f:facet name="header">
Preço
</f:facet>
#{cd.preco}
</h:column>
<h:column>
<f:facet name="header">
Ano
</f:facet>
#{cd.anoLancamento.anoLancamento}
</h:column>
</h:dataTable>
</h:form>
</f:view>
</h:body>
</html>
Tem um commandlink na primeira coluna do datatable e gostaria de passar a variável cd (var=“cd”) do meu datatable para o método EditCd do Bean.
Tem como fazer isso?
Obrigado…