p:commandLink não funciona com DataModel

Estou utlizando p:dataTable com paginacao, para isso eu retorno uma lista de um dataModel, mas os links na linha que servem para alterar e excluir param de funcionar…

Quando o retorno é uma lista do objeto tudo funciona, mas quando é dataModel (necessario para paginação) para de funcionar…

<p:dataTable value="#{listaObjetosBean.dataModel}" var="objeto" paginator="true" rows="5" lazy="true">

<p:column headerText="Ações">
<p:commandLink id="ajax" update=":listagem" actionListener="#{objetoBean.remover(objeto)}" ajax="true">
	<h:outputText value="Remover" />
</p:commandLink>
					-
<p:commandLink value="Alterar" update=":insercao" >
	<f:setPropertyActionListener value="#{objeto}" target="#{objetoBean.objeto}" />
</p:commandLink>

</p:column>

1 curtida

Poste o código do seu LazyDataModel por favor.

Boa noite Igor, segue abaixo, obrigado por ajudar…

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;

import br.com.dao.DAO;
import br.com.modelo.Objeto;

public class DataModelObjetos extends LazyDataModel<Objeto> implements Serializable {

	private static final long serialVersionUID = -6132969163305784568L;

	
    public List<Objeto> load(int inicio, int quantidade, String campoOrdenacao, SortOrder sentidoOrdenacao, Map<String,Object> filtros) {
		DAO<Objeto> dao = new DAO<Objeto>(Objeto.class);

		return dao.listaTodosPaginada(inicio, quantidade);
    }
}

DAO >>>

    public List<T> listaTodosPaginada(int firstResult, int maxResults) {
		EntityManager em = new JPAUtil().getEntityManager();
		CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
		query.select(query.from(classe));

		List<T> lista = em.createQuery(query).setFirstResult(firstResult)
				.setMaxResults(maxResults).getResultList();

		em.close();
		return lista;
	}

BEAN >>>

	private LazyDataModel<Objeto> dataModel;

	public ListaObjetosBean() {
		this.dataModel = new DataModelObjetos();
		
		DAO<Objeto> dao = new DAO<Objeto>(Objeto.class);
		this.dataModel.setRowCount(dao.contaTodos());
	}

A paginação esta funcionando perfeitamente, so os links dentro da tabela que pararam de funcionar…

1 curtida

Legal
Onde estão as ações dos botões?

uai… o tutorial q segui não falava sobre isso, achei q como estava recuperando a lista de objetos direitinho deveria funfar tudo normal…

Nao sei se entendi a pergunta, mas o

<f:setPropertyActionListener value="#{objeto}" target="#{objetoBean.objeto}" />
faz a injeção direta no objeto do target…

Ja o remover esta num Bean porem eu coloquei breakpoint e ele nem entra…

a questao é quando a lista de iteração é de objetos normal tudo funfa, quando é dataModel nem commandButton nem commandlink funcionam…

Entendi…
Putz, então não sei o que pode ser cara…

Tenso, ainda não encontrei soluação pra isso…