Primefaces + JSF2.0 - p:dataTable - o método get é executado varias vezes no lifeCycle
16 respostas
T
tjalencar
Comecei a trabalhar a pouco tempo com jsf e acabei me deparando com uma situação que me preocupou um pouco, ao debugar a paginação do componente p:dataTable percebi que o método get que carrega a lista para o dataTable é executado varias vezes dentro de um único clico de vida.
Não estou usando o lazy. o problema não esta no get, o problema é ele ser executado varias vezes, em um único ciclo de vida, quando repagina o dataTable ele executa todos os ciclos e o método executa varias vezes em cada ciclo.
D
diegosammet
tjalencar:
kleberdamasco:
estás usando o lazy?
tens como colocar o método get() ?
Não estou usando o lazy. o problema não esta no get, o problema é ele ser executado varias vezes, em um único ciclo de vida, quando repagina o dataTable ele executa todos os ciclos e o método executa varias vezes em cada ciclo.
Então não faça de jeito oras… Isso é do ciclo de vida do JSF e não tem como evitar… Crie sua lista; e popule-a ( Logica + Queries) no construtor do seu MB, ou em um método anotado com @PostConstruct. No get você só retorna a lista.
K
kleberdamasco
ficaria mais fácil se você colocasse o seu método get()
para dar uma olhada!
T
tjalencar
diegosammet:
Então não faça de jeito oras… Isso é do ciclo de vida do JSF e não tem como evitar… Crie sua lista; e popule-a ( Logica + Queries) no construtor do seu MB, ou em um método anotado com @PostConstruct. No get você só retorna a lista.
Amigo eu sei o que é o ciclo de vidas e sei como funciona, o que estou questionando é múltipla execução dentro de um ciclo de vida, mesmo com o @PostConstruct acontece a mesma coisa.
Não teria vindo aqui questionar uma coisa sem ter efetuado vários testes.
Esta tudo funcionando perfeitamente, só criei o tópico para intender o que esta ocorrendo.
K
kleberdamasco
você poderia colocar o seu método get()?
D
diegosammet
tjalencar:
diegosammet:
Então não faça de jeito oras… Isso é do ciclo de vida do JSF e não tem como evitar… Crie sua lista; e popule-a ( Logica + Queries) no construtor do seu MB, ou em um método anotado com @PostConstruct. No get você só retorna a lista.
Amigo eu sei o que é o ciclo de vidas e sei como funciona, o que estou questionando é múltipla execução dentro de um ciclo de vida, mesmo com o @PostConstruct acontece a mesma coisa.
Não teria vindo aqui questionar uma coisa sem ter efetuado vários testes.
Esta tudo funcionando perfeitamente, só criei o tópico para intender o que esta ocorrendo.
O problema é o NOME do método, entendeu? Qualquer método GET que esteja no MB é executado várias vezes, se você tiver as consultas dentro de um get ele irá executar N vezes e não a nada que você possa fazer sobre isso.
T
tjalencar
kleberdamasco:
ficaria mais fácil se você colocasse o seu método get()
para dar uma olhada!
Tanto em um método como no outro ocorre a mesma coisa.
o GenericDataModel é uma extensão de DataModel
T
tjalencar
diegosammet:
O problema é o NOME do método, entendeu? Qualquer método GET que esteja no MB é executado várias vezes, se você tiver as consultas dentro de um get ele irá executar N vezes e não a nada que você possa fazer sobre isso.
valeu.
J
JackOld
diegosammet:
tjalencar:
diegosammet:
Então não faça de jeito oras… Isso é do ciclo de vida do JSF e não tem como evitar… Crie sua lista; e popule-a ( Logica + Queries) no construtor do seu MB, ou em um método anotado com @PostConstruct. No get você só retorna a lista.
Amigo eu sei o que é o ciclo de vidas e sei como funciona, o que estou questionando é múltipla execução dentro de um ciclo de vida, mesmo com o @PostConstruct acontece a mesma coisa.
Não teria vindo aqui questionar uma coisa sem ter efetuado vários testes.
Esta tudo funcionando perfeitamente, só criei o tópico para intender o que esta ocorrendo.
O problema é o NOME do método, entendeu? Qualquer método GET que esteja no MB é executado várias vezes, se você tiver as consultas dentro de um get ele irá executar N vezes e não a nada que você possa fazer sobre isso.
Pode sim cara!!! Sai do JSF :twisted:
D
diegosammet
Claro, parar de usar um framework só pra evitar um :
lista = metodoQuePopulaLista();
no construtor? No, thanks…
J
JackOld
Claro, parar de usar um framework só pra evitar um :
Ó Haters, se soubessem que 90% dos problemas do JSF é falta de estudo, tudo seria mais fácil. Anyway, falando sério agora. JSF não é perfeito, não é bala de prata, não resolve todos os problemas do mundo, mas cumpre com propriedade o que foi projetado para fazer… É só aprender de VERDADE como fazer.
J
JackOld
Só sei de uma coisa Component Based FW nunca mais…