I need to edit a line of the dataTable when I open the dialog, but it is not working the way I am doing, I did a test in the console, and the object gets null when I send the edit of it, it's like it does not load.
Image to demonstrate what I want:
DataTable:
<p:dataTableemptyMessage="Nenhum registro salvo !"
filteredValue="#{projetoBean.listaProjetosFiltrados}"
value="#{projetoBean.listaProjetos}" var="projeto" rows="5" paginator="true" >
<p:column headerText="Porcentagem de Conclusão:">
<p:commandButton value="#{projeto.porcentagem}" onclick="PF('dlg1').show();" >
<f:setPropertyActionListener target="#{projetoBean.projetoCadastro}"
value="#{projeto}"/>
</p:commandButton>
</p:column>
</p:dataTable>
Dialog:
<h:form>
<p:dialog header="Editar Porcentagem" widgetVar="dlg1" minHeight="40">
<h:outputText value="Digite a nova porcentagem" />
<p:inputText maxlength="3" value="#{projetoBean.projetoCadastro.porcentagem}"/>
<p:commandButton value="Salvar" actionListener="#{projetoBean.editar}" update=":msgGlobal"/>
</p:dialog>
</h:form>
Bean:
@ManagedBean
@ViewScoped
public class ProjetoBean {
private String acao;
private Long idProjeto;
private Projeto projetoCadastro;
private List<Projeto> listaProjetos;
private List<Projeto> listaProjetosFiltrados;
private List<Usuario> listaUsuarios;
private List<Cliente> listaClientes;
//GetSet
public void limpar() {
projetoCadastro = new Projeto();
}
public void criar() {
try {
ProjetoDAO projetodao = new ProjetoDAO();
projetodao.salvar(projetoCadastro);
projetoCadastro = new Projeto();
FacesUtil.addMsgInfo("Projeto criado com sucesso !");
} catch (RuntimeException ex) {
FacesUtil.addMsgErro("Erro ao tentar incluir um projeto");
}
}
public void carregarPesquisa() {
try {
ProjetoDAO projetodao = new ProjetoDAO();
listaProjetos = projetodao.listar();
} catch (RuntimeException ex) {
FacesUtil.addMsgErro("Erro ao listar Projetos");
}
}
public void carregarCadastro(){
try {
if(idProjeto != null){
ProjetoDAO projetodao = new ProjetoDAO();
projetoCadastro = projetodao.buscarId(idProjeto);
} else {
projetoCadastro = new Projeto();
}
UsuarioDAO usuariodao = new UsuarioDAO();
listaUsuarios = usuariodao.listar();
ClienteDAO clientedao = new ClienteDAO();
listaClientes = clientedao.listar();
} catch (RuntimeException ex) {
FacesUtil.addMsgErro("Erro ao tentar obter dados do projeto.");
}
}
public void excluir() {
try {
ProjetoDAO projetodao = new ProjetoDAO();
projetodao.excluir(projetoCadastro);
FacesUtil.addMsgInfo("Projeto removido com sucesso !");
} catch (RuntimeException ex) {
FacesUtil.addMsgErro("Erro ao tentar remover um projeto.");
}
}
public void editar() {
try {
ProjetoDAO projetodao = new ProjetoDAO();
projetodao.editar(projetoCadastro);
System.out.println(projetoCadastro);
FacesUtil.addMsgInfo("Projeto editado com sucesso !");
} catch (RuntimeException ex) {
FacesUtil.addMsgErro("Erro ao tentar editar um projeto.");
}
}
}