onLoad em JSF [RESOLVIDO]

6 respostas
daniel4613

Pessoal… me tirem uma dúvida por gentileza… como eu consigo executar um botão logo que a página é exibida ?

6 Respostas

Hebert_Coelho

Pra que?

Você pode executar um método quando a página for carregada.

Se você tiver um datatable, por exempo, no getCarros você poderia realizar a consulta numa boa.

E

JSF 2?

se sim você pode usar

<h:body onload="loadPage()">

ou

<f:metadata>  
    <f:event type="preRenderView" listener="#{meuMB.metodo}"/>  
</f:metadata>

se não você pode colocar um JS na propria tag body no HTML e se houver necessidade de chamar um metodo do bean vc usa o a4j:jsFunction em conjunto.

<body onload="loaderJS()">

acredito que colocar um metodo de acesso ao banco por exemplo no get pode causar um impasse no desempenho desnecessario, pois no ciclo de vida do faces ele chama varias vezes o get e set do objeto, por acompanhar alguns post do jakefrog podemos perceber que ele é um grande conhecedor de JSF , então me corrija se estiver enganado

Hebert_Coelho
ErickMacedo:
acredito que colocar um metodo de acesso ao banco por exemplo no get pode causar um impasse no desempenho desnecessario, pois no ciclo de vida do faces ele chama varias vezes o get e set do objeto, por acompanhar alguns post do jakefrog podemos perceber que ele é um grande conhecedor de JSF , então me corrija se estiver enganado
Opa, que isso. Estou aprendendo muito a cada dia! =D O modo que teria problema seria:
public List<Carros> getCarros(){
    return carrosFacade.listAll();
}
Desse modo realmente a performance vai pro buraco. Eu faço assim:
public List<Carros> getCarros(){
    if(carros == null){
        carros = carrosFacade.listAll();
    }

    return  carros;
}
Desse modo ao entrar na tela pela primeira vez o load é feito e depois disso é usado o valor que já está na instância. [=

Até hoje não vi problema com essa abordagem, mas se eu encontra eu aviso aqui e mudo rapidinho! :D

E

Realmente dessa forma funciona certinho, porem em escopo de request sempre ser realizado um acesso ao banco…

Bom mais acho que já resolveu o problema do nosso amigo

daniel4613

Shooow de bola… fiz isso… coloquei a ação dentro do método GET… melhor assim mesmo que não precisa renderizar nada…

Muito obrigado aee.

Hebert_Coelho

ErickMacedo:
Realmente dessa forma funciona certinho, porem em escopo de request sempre ser realizado um acesso ao banco…

Bom mais acho que já resolveu o problema do nosso amigo

Exato. Só tem que levar em consideração também que o mesmo MB pode ser utilizado em outras páginas. Com isso, apenas quando o GET fosse executado ele seria invocado.
Mas é questão de design. Existem vários e cada um com sua vantagem e desvantagem. [=

Criado 21 de agosto de 2012
Ultima resposta 21 de ago. de 2012
Respostas 6
Participantes 3