Duvida para deletar item na tabela

8 respostas
b10machado

coloquei uma imagem pra ilustraçao e um comandlink, nao sei se é uma forma boa de se usar…

ja tenho o metodo que vai deletar esse cara mias como chamar o id do cara que clickei dessa tabela??

<p:dataTable id="listagrupos"  var="grupos" value="#{grupoBean.listGrupos}"
                                             paginator="true" rows="6" rowKey="#{grupos.idGrupos}"
                                             selection="#{grupoBean.grupoSelecionado}" 
                                             selectionMode="single"
                                             rendered="true"  >
                                    <f:facet name="header"> GRUPOS </f:facet>  
                                        
                                    <p:column  style="width:185px">
                                        <f:facet name="header">
                                            Grupo
                                        </f:facet>
                                        <h:outputText value="#{grupos.nomeGrupo}" />
                                    </p:column>
                                                                          
                                    <p:column  style="width:85px">
                                        <f:facet name="header">
                                            Deletar
                                        </f:facet>
                                        <center>
                                            <p:graphicImage value="imagens/excluir.png"/>
                                            <br/>
                                            <p:commandLink value="Deletar" actionListener="#{??}"/>
                                        </center>
                                    </p:column>
                                        
                                    <f:facet name="footer">
                                        <p:commandButton id="viewButtonGrupos" value="visualizar" icon="ui-icon-search"
                                                         update=":display3" oncomplete="gruposDialog.show()">
                                         <!--   <f:setPropertyActionListener value="#{grupos.idGrupos}" 
                                         target="#{grupoBean.grupoSelecionado.idGrupos}"/>  -->
                                        </p:commandButton>
                                    </f:facet>
                                        
                                </p:dataTable>


=================================================
grupoBean

    public void deletarGrupo(){
        
        GrupoPG dao = new GrupoPG();
        AmigosPG aDao = new AmigosPG();
        int idgrupo = 0;
         idgrupo = ??
        dao.deleteGrupo(idgrupo);

    }


8 Respostas

alanrodrigues

Coloca um f:param dentro do commandlink, e passa o id…
No seu método vai ter q receber esse param… da uma googleado

b10machado
<p:commandButton id="deletar" value="Deletar" icon="imagens/excluir.png" 
                                                         update=":display5" oncomplete="DeletarGrupoDialog.show()" 
                                                         style="margin-left: 5px" >
                                            <f:setPropertyActionListener value="#{grupos.idGrupos}" 
                                                    target="#{grupoBean.grupoSelecionado.idGrupos}"/>
                                            
                                        </p:commandButton>

esse valor vai para o gruposelecionado.idGrupos ou tenho q da um get?? xhtml

pq assim não pegou nada…

idgrupo = getGrupoSelecionado().getIdGrupos();
alanrodrigues

<p:commandButton id="deletar" value="Deletar" icon="imagens/excluir.png" update=":display5" oncomplete="DeletarGrupoDialog.show()" style="margin-left: 5px" >  
<f:param name="nomeParametro" value="#{grupos.id}"></f:param>                              
</p:commandButton>

Bean:

public void deletarGrupo(FacesContext fc){  
        Map<String,String> params = fc.getExternalContext().getRequestParameterMap();
        String parametro = params.get("nomeParametro");
        GrupoPG dao = new GrupoPG();  
        AmigosPG aDao = new AmigosPG();  
        int idgrupo = 0;  
         idgrupo = ??  
        dao.deleteGrupo(idgrupo);  
  
    }
P

voce pode fazer assim:
xhtml

<p:dataTable id="dt" value="#{ctrlManterUsuario.lista}" var="user">
	<p:column style="width: 100px">
		<p:commandLink onclick="dlg_excluir.show()" update=":form:gridExcluir" process="@this" title="Excluir">
			<f:setPropertyActionListener target="#{ctrlManterUsuario.selecionado}" value="#{user}" />
			<h:graphicImage value="/resources/images/trash.png" />
		</p:commandLink>
	</p:column>
//......
public void excluirUsuario(){
	try {
		usuarioDAO.beginTransaction();
		selecionado = usuarioDAO.findReferenceOnly(getSelecionado().getCod_usuario());
		usuarioDAO.delete(selecionado);
		usuarioDAO.commitAndCloseTransaction();			
	} catch (Exception e) {
		e.printStackTrace();
	}
}

Voce pode ate mesmo usar o confirmDialog do primefaces (http://www.primefaces.org/showcase-labs/ui/confirmDialog.jsf) e no ‘SIM’ voce chama o método excluir dai

método do DAO findReferenceOnly

public T findReferenceOnly(int entityID) {
	return em.getReference(entityClass, entityID);
}

Qualquer coisa de uma olhada aqui: http://uaihebert.com/?p=1414

Abraços

P

outra dica para melhorar um pouco o código xhtml, no column do dataTable do primefaces, você pode trocar isso

<p:column  style="width:185px">  
	<f:facet name="header">  
		Grupo  
	</f:facet>  
	<h:outputText value="#{grupos.nomeGrupo}" />  
</p:column>

por somente isso:

<p:column headerText="Grupo" style="width:185px">  
	<h:outputText value="#{grupos.nomeGrupo}" />  
</p:column>
b10machado

vlw pelas dicas vou tentar fazer com elas!!

b10machado

iae pessoal blz tentei dessa maneira mais nao passa nd, tipo continuar os paremetros no output text mais nao consigo pegar

<p:commandButton value="Deletar" icon="ui-icon-trash" update=":form3"
                                                  style="margin-left: 20px" oncomplete="DeletarGrupoDialog.show()" >
                                            <f:param value="#{grupoBean.grupoSelecionado}" name="id"/>
</p:commandButton>

e com <f:setPropertyActionListener target="#{ctrlManterUsuario.selecionado}" value="#{user}" /> nesse caso para ate de passar os parametros no output text

M

Use o atributo VAR que você definiu na dataTable como “grupos”, fica mais fácil. Algo como:

XHTML:

&lt;p:commandButton value="Deletar" action="#{bean.exclui(grupos)}"/&gt;

BEAN:

public void exclui(Grupo grupo){ dao.exclui(grupo); }

Criado 16 de outubro de 2012
Ultima resposta 20 de out. de 2012
Respostas 8
Participantes 4