Como faço um evento "onload" em jsf?

12 respostas
V

Estou precisando urgente que quando a página seja carregada ela acione um evento

Como faria isso em jsf?

VENOM

12 Respostas

T

simplesmente colocando o onload dentro da tag não funciona?

A

Como o amigo tubiluki já sugeriu, use o onload na tag do seu HTML.
Não é necessário usar faces para o seu caso.

...

Flws!
Anderson
PS: esse tópico poderia estar no fórum de Aplicações Web :stuck_out_tongue:

C

Coloca o seu evento… no onload da tag…

<afh:body binding="#{backing.body}" onload="#{backing.evento}">

V

A minha duvida foi mal interpretada, NÃO quero acionar um evento javascript.

Quero que quando a pagina carregue acione um evento contido em uma classe java através do managed bean

Aquele que deu a resposta mais próxima foi capiwarrior, mas nao consegui.

Que componente é este “afh:body”?

Para facilitar, ta aqui o codigo fonte do que to querendo testar

A idéia é simples. Quando a página carregar deve ser acionando o evento “testandoOnload()” que irá alterar o texto do command button

agradeco quem puder me ajudar, to precisando mesmo

teste.jsp

<%@ page contentType=“text/html;charset=windows-1252”%>
<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h”%>
<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f”%>
<f:view>

teste <%-- oracle-jdev-comment:auto-binding-backing-bean-name:backing_teste--%> ----------------

Teste.java

package teste.backing;

import javax.faces.component.html.HtmlCommandButton;
import javax.faces.component.html.HtmlForm;

public class Teste {

private HtmlForm form1;

private HtmlCommandButton commandButton1;
public void setForm1(HtmlForm form1) {
    this.form1 = form1;
}

public HtmlForm getForm1() {
    return form1;
}

public void setCommandButton1(HtmlCommandButton commandButton1) {
    this.commandButton1 = commandButton1;
}

public HtmlCommandButton getCommandButton1() {
    return commandButton1;
}

public String commandButton1_action() {
    // Add event code here...
    return null;
}

//Evento que deve ser ativado na inicialização da página//
public void testandoOnload(){
    commandButton1.setValue("Funcionou");   
}

}


U

pra implementar o que tu quer fazer precisa de uma mistura de código java com javasctipt …
a forma mais provavel de conseguir implementar isto é com alguma biblioteca para AJAX (pelo menos foi o que consegui entender do que tu explicou até agora :smiley: )

V

:slight_smile: PROBLEMA RESOLVIDO EM PARTE - Mas pode melhorar :wink:

Depois de queimar pestanas achei um jeito

Basta chamar o metodo que quero no evento setForm1

neste caso:

public void setForm1(HtmlForm form1) {
    this.form1 = form1;
    tentandoOnload(); //metodo chamando durante o carregamento da pagina
    
}

Porém gostaria de tentar o metodo que o capiwarrior postou

<afh:body binding="#{backing.body}" onload="#{backing.evento}">

pois se funcionar seria algo mais elegante e legivel

Pelo que pesquisei vc usou um componente HtmlBody não é?

Para isso é necessário ter as bibliotecas do tal ADF não? Eu importe a biblioteca para por este componente no backing bean, porém não achei a declaração da taglib “afh” tipo:
<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f”%>

poderia dá um exemplo completo?

VENOM

C

Eu uso a declaracao assim no meu .jspx


<jsp:root xmlns:jsp=“http://java.sun.com/JSP/Page” version="2.0"
xmlns:afh=“http://xmlns.oracle.com/adf/faces/html”>


<afh:body binding="#{backing_sag_pohecamp2.body}" onload="#{backing_sag_pohecamp2.onLoad}">

Espero ter ajudado.

F

Venom,

Estou com o mesmo problema que você, dei uma pesquisada no google e achei um componente para utilizar onload.

ainda não implementei, assim que conseguir alguma coisa eu posto aqui.

Olha o link ae
http://jsf-comp.sourceforge.net/components/onload/index.html

falou

F

Venom,

Testei o componente de onload e funcionou muito bem.

baixa lá no site é bem simples a configuração, você só tem um xml na pasta web-inf e nele vc configura a pagina e os métodos do backing bean desta pagina que deseja executar no onload.

Espero ter ajudado.

Falou

A

Consegui uma solução específica para o meu propósito. Ainda não sei qual vai ser o impacto, mas executei a minha ação no construtor do BackingBean.
Queria aproveitar pra perguntá-los.

O construtor só é chamado uma única vez, quando o escopo do backing bean é a sessão?

G

Exatamente, se o escopo do bean é session, ele só vai executar o contrutor da primeira vez, e nesses casos geralmente a gente acaba precisando de um “prerender” mesmo.
Só pra dar outras opcoes (apesar de eu achar o esquema com as tags mais simples) voce pode também usar o esquema de backing bean gerado pelo StudoCreator ou pelo Visual Web Pack do Netbeans, ou entao o Shale (que oferece muitas outras coisas) pra executar esse prerender.
O esquema deles basicamente é utilizar o ViewHandle para, baseado no nome da sua jsp buscar o seu managed bean e entao chamar os metodos prerender, preprocess e pre+um monte de coisinhas que esses meios oferecem. Pra isso seu managed bean tem q ter um padrao de nome em relacao ao jsp e vc precisa fazer ele implementar uma interface (Shale) ou estender uma classe abstrata (StudioCreator). Isso nao costuma ser problema, pois na maioria dos casos eu já estendo uma classe basica com varios metodos uteis.

L

Cara, também precisei chamar um método ao carregar a página.

Fiz de uma forma simples mas não o ideal ainda.

Crieu o metodo no backbean:

Public String getCarregar(){ ** seu codigo aqui; return null; }

E na página que quero chamar o método criei um outputtext mesmo.
Assim:

Desta forma funcionou e é bem simples.

Criado 6 de novembro de 2006
Ultima resposta 16 de set. de 2011
Respostas 12
Participantes 9