Pessoal, boa tarde.
No meio da correria do TCC consegui tempo para escrever um post que poderá ajudar muitos aqui no GUJ.
Paginação de Datatable Lazy com JSF (Primefaces)
Até a próxima! \o_
Pessoal, boa tarde.
No meio da correria do TCC consegui tempo para escrever um post que poderá ajudar muitos aqui no GUJ.
Paginação de Datatable Lazy com JSF (Primefaces)
Até a próxima! \o_
Muito legal!
Prezado jakefrog, e manter o bean com escopo request, como haviamos discutido em outro tópico, rolou?
A propósito parabéns pelo trabalho no blog.
Muito legal!Rapaz, eu tava procurando esse tópico para ir lah responder mas tinha tanta msg no histórico que naõ achei! :oops:Prezado jakefrog, e manter o bean com escopo request, como haviamos discutido em outro tópico, rolou?
A propósito parabéns pelo trabalho no blog.
Consegui fazer a paginação com o Request Scope, mas eu vi que não valia a pena. :shock:
Por isso optei por deixar em ViewScoped mesmo, tive dando uma estudada e vi que o impacto é mínimo. Vale a pena.
Valeu ae pela força. =D
Por que? Ele não chama o load a cada request?
Como o cara estava como request scope ele estava perdendo referência. Aí para cada registro no datable seria necessário enviar o id para um actionListener e esse id seria carregado no DB.
- Para cada registro no datatable seria necessário um disparo no DB para fazer a consulta e trazer a informação.
Por que? Ele não chama o load a cada request?
Mas o problema maior mesmo seria interceptar as chamadas do primefaces, fazer ele entender que ele pode continuar com o ciclo e carregar o valor do parâmetro enviado no request.
Muito legal o tema,parabéns.
Só não entendi em que momento o método load é disparado,pois no método getAllPlayers() vc está apenas inicializando a lista.
Muito legal o tema,parabéns.É o proprio Primefaces quem invoca! =DSó não entendi em que momento o método load é disparado,pois no método getAllPlayers() vc está apenas inicializando a lista.
Por isso deixei a consulta e as demais ações lá dentro. =D
Valeu pela força! =D
Muito legal o tema,parabéns.É o proprio Primefaces quem invoca! =DSó não entendi em que momento o método load é disparado,pois no método getAllPlayers() vc está apenas inicializando a lista.
Por isso deixei a consulta e as demais ações lá dentro. =D
Valeu pela força! =D
Certo,e quanto ao startingPoint e maxPerSize,como isso é incrementado?
Certo,e quanto ao startingPoint e maxPerSize,como isso é incrementado?Tio Primefaces toma conta disso para vc. =D
De igual modo com o sortField! [=
Certo,e quanto ao startingPoint e maxPerSize,como isso é incrementado?Tio Primefaces toma conta disso para vc. =D
Quando o usuário clica página 4 por exemplo, ele já envia o valor inicial daquela página e quantos registros por página deve exibir! =D
Esse cara aí é uma mão na roda.De igual modo com o sortField! [=
Homi então o negócio eh bom mesmo

Lembro que eu sofri um bocado pra implementar lazy loading no RichFaces no JSF 1.2 .Realmente ficou uma mão na roda agora.
E parabéns pelo blog,seus artigos são sempre bem escritos e esclarecedores.
Haha, é sim viu. Quando eu comecei a implementar eu vi que realmente tá muito fácil poupar memória do servidor! O.o
Valeu pela força ae! =D
Parabéns pelo POST !
To com um problema aqui : A paginação funciona. o FIltro também . Mas ao selecionar uma linha :
INFO: java.lang.ArithmeticException: / by zero
java.lang.ArithmeticException: / by zero
at org.primefaces.model.LazyDataModel.setRowIndex(LazyDataModel.java:62)
at javax.faces.component.UIData.setRowIndexWithoutRowStatePreserved(UIData.java:485)
at javax.faces.component.UIData.setRowIndex(UIData.java:473)
at javax.faces.component.UIData.iterate(UIData.java:1978)
at javax.faces.component.UIData.processUpdates(UIData.java:1253)
at org.primefaces.component.datatable.DataTable.processUpdates(DataTable.java:537)
at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:510)
at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
at javax.faces.component.UIData.visitTree(UIData.java:1411)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
at javax.faces.component.UIForm.visitTree(UIForm.java:344)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:376)
at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:252)
at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183)
at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:1229)
at com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:78)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:126)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:785)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:649)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:483)
at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:454)
at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:350)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:300)
at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:118)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)
Já teve esse problema ?
Alguma dica de como resolver ?
Valeu !
Eu tive esse problema quando o ManagedBean estava como RequestScope e não ViewScope.
Seu MB está como?
Está como : @ViewScoped
Você teve essa mesma Exceção, que eu citei acima ?
Tô usando o primefaces-3.1.1 ví que você usou o Primefaces 3.2
Será que pode ser isso ?
Abraço !
Não é 
Coloquei o primefaces-3.2-SNAPSHOT.jar
e Deu o mesmo erro !
I agora ? :roll:
Você está utilizando o código que tem lá ou criou um seu?
A …
não dá pra falar que é o mesmo código pois estou usando outro banco . E estou manipulando outro Bean.
Mas a Parte da view eu usei o seu exemplo .
Melhor abrir outro post pra tratar o assunto ?
// set the total of players
if(getRowCount() <= 0){
setRowCount(playerDAO.countPlayersTotal());
}
// set the page dize
setPageSize(maxPerPage);
Coloquei …
public List<ClienteBean> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,String> filters) {
List<ClienteBean> data = new ArrayList<ClienteBean>();
try {
if(getRowCount() <= 0){
this.setRowCount(ClienteController.getInstance().getNumRegistros());
}
this.setPageSize(pageSize);
Você tem dados retornando da consulta?
Esse cara aqui está retornando um valor maior que zero? this.setRowCount(ClienteController.getInstance().getNumRegistros());
Bom dia !
Está sim . Retornando o total de registros.
if(getRowCount() <= 0){
int rowCount = ClienteController.getInstance().getNumRegistros();
this.setRowCount(rowCount);
System.out.println("rowCount*******************"+rowCount);
}
//-----------------------------------
INFO: rowCount*******************13
É cara, ta muito estranho isso. Eu tive esse erro quando meu MB estava como RequestScoped.
O método que está te dando o erro é:
this.rowIndex = rowIndex == -1 ? rowIndex : (rowIndex % pageSize); Nesse caso era pq o pageSize estava zerado.
=/
Para resolver o problema tive que sobrescrever o método setRowIndex(int rowIndex)
da sequinte forma:
@Override
public void setRowIndex(int rowIndex) {
if (rowIndex == -1 || getPageSize() == 0) {
super.setRowIndex(-1);
}
else{
super.setRowIndex(rowIndex % getPageSize());
}
}
Mudando um pouco de assunto .
Como que agente poderia criar um DataModel Generico ?
Algo do tipo :
public class LazyGenericDataModel<T extends Bean> extends LazyDataModel<T>
O problema é chamar classes DAO diferentes . Pois não tem como fazer algo assim :
if(T instanceOf ClienteBean)
List <T> data = ClienteDAO.getInstance().listadados(parametros)
if(T InstanceOf BancoBean)
List <T> data = BancoDAO.getInstance().listadados(parametros)
Entendeu ?
Geralmente eu utilizo um DAO generico também.
Nesse caso você teria: GenericDAO.getALL(); por exemplo.
Realmente você vai ter que quebrar a cabeça legal aí! ^^
A … legal !
Um DAO Genérico !
Vou implementar ! certeza !
Valeu (y)