Paginação DataTable Primefaces não funciona

7 respostas
B

Bom dia Pessoal,

Venho pedir ajuda para a seguinte questão. Estou trabalhando com jsf 2.0 e primefaces e na minha página tenho um datatable com paginação. No momento em que faço a pesquisa o datatable é preenchido, mas quando vou passar para a próxima página os dados somem. segue abaixo trecho da página com o datatable e o manage bean.

<p:dataTable id="lista" value="#{compraMB.listaItens}" var="item" rows="5" paginator="true" paginatorPosition="bottom" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}">		
			
			<p:column>
			<f:facet name="header"><h:outputText value="Item"/></f:facet>
				<h:outputText id="cod" value="#{item.produto.codProduto}"/>
			</p:column>
			
			<p:column>
			<f:facet name="header"><h:outputText value="Descrição do Produto"/></f:facet>
				<h:outputText value="#{item.produto.nomeProduto}"/>
			</p:column>
			
			<p:column>
			<f:facet name="header"><h:outputText value="Mínimo"/></f:facet>
				<h:outputText value="#{item.produto.minimo}"/>
			</p:column>

			<p:column>
			<f:facet name="header"><h:outputText value="Estoque"/></f:facet>
				<h:outputText value="#{item.produto.qtdeEstoque}"/>
			</p:column>
			
			<p:column>
			<f:facet name="header"><h:outputText value="Sugestão"/></f:facet>
				<h:outputText value="#{item.qtdeSugerida}"/>
			</p:column>

			<p:column>
			<f:facet name="header"><h:outputText value="Comprar"/></f:facet>
				<h:inputText value="#{item.qtdeComprar}"/>
			</p:column>

			<p:column>
			<f:facet name="header"><h:outputText value="Laboratório"/></f:facet>
				<h:outputText value="#{item.produto.laboratorio.descrLab}"/>
			</p:column>
			
			<p:column>
				<p:commandButton actionListener="#{compraMB.excluirItem}" value="deletar">
				</p:commandButton>	
			</p:column>
		</p:dataTable>
package farmacia.presentation.mb;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;

import javax.faces.component.UIParameter;
import javax.faces.event.ActionEvent;

import farmacia.business.to.Compra;
import farmacia.business.to.ItemCompra;
import farmacia.business.to.Produto;
import farmacia.presentation.bd.ItemCompraCTR;

public class CompraMB {
	
	private Compra compra;
	private ItemCompraCTR itemCtr;
	private List<ItemCompra> listaItens;
	
	public ItemCompraCTR getItemCtr () {
		if (itemCtr == null){
			itemCtr = new ItemCompraCTR();
		}
		return itemCtr;
	}
	
	public CompraMB(){
		compra = new Compra();
	}

	public Compra getCompra() {
		return compra;
	}

	public void setCompra(Compra compra) {
		this.compra = compra;
	}
	
	public List<ItemCompra> getListaItens() {
		return listaItens;
	}

	public void setListaItens(List<ItemCompra> listaItens) {
		this.listaItens = listaItens;
	}

	public void gerar(ActionEvent e) throws ParseException{
		setListaItens(getItemCtr().calcularSugestaoCompra(compra));
	}

}

Desde já agradeço a atenção.

7 Respostas

J

Nosso amigo jakefrog criou um tutorial sobre o assunto:

http://uaihebert.com/?p=1089

acho que pode te ajudar .
Abraço !

H

joaoorso:
Nosso amigo jakefrog criou um tutorial sobre o assunto:

http://uaihebert.com/?p=1089

acho que pode te ajudar .
Abraço !

Valeu pela força! =D

O seu CompraMB está como SessionScoped ou ViewScoped?

B

Está como request

H

bruno.polone:
Está como request
Coloca como ViewScoped e você vai ser feliz. [= (Se não ficar feliz, tenta o session :P)

B

Com o escopo session funcionou.

Mas qual a diferença entre o request, view escoped e session?

H

bruno.polone:
Com o escopo session funcionou.

Mas qual a diferença entre o request, view escoped e session?

Request dura uma chamada e depois os dados voam.
View os dados são mantidos na memória do servidor enquanto o usuário estiver na página (ideal para utilizar dialog)
Session funciona como HttpSession normal mesmo. Tudo fica alocado na memória do servidor até q o usuário efetue log of ou sua sessão expire.

B

Obrigado pela ajuda.

Criado 4 de abril de 2012
Ultima resposta 4 de abr. de 2012
Respostas 7
Participantes 3