onLoad em JSF [RESOLVIDO]

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

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.

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

[quote=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 [/quote]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:[code]public List getCarros(){
if(carros == null){
carros = carrosFacade.listAll();
}

return  carros;

}[/code] 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! :smiley:

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

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.

[quote=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[/quote]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. [=