Como faço um evento "onload" em jsf?  XML
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Autor Mensagem
venomtotal
Java Ninja
[Avatar]

Membro desde: 24/04/2006 00:09:57
Mensagens: 298
Offline

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

Como faria isso em jsf?

VENOM
tubiluki
JavaBaby

Membro desde: 05/08/2006 11:05:33
Mensagens: 96
Offline

simplesmente colocando o onload dentro da tag <body> não funciona?
schmidt
JavaChild
[Avatar]

Membro desde: 21/04/2005 11:02:51
Mensagens: 149
Localização: Ctba/PR
Offline

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

<body onLoad="suafunction();" >
...
</body>


Flws!
Anderson
PS: esse tópico poderia estar no fórum de Aplicações Web
[MSN]
capiwarrior
Entusiasta Java
[Avatar]

Membro desde: 19/10/2006 15:16:40
Mensagens: 15
Localização: Curitiba - PR
Offline

Coloca o seu evento.. no onload da tag...

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

Mauricio Couto Pelissari
----------------------------
http://capiwarrior.blogspot.com/
[Email] [WWW]
venomtotal
Java Ninja
[Avatar]

Membro desde: 24/04/2006 00:09:57
Mensagens: 298
Offline

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
------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ 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>
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=windows-1252"/>
<title>teste</title>
</head>
<body><h:form binding="#{backing_teste.form1}" id="form1">
<h:commandButton value="commandButton1"
binding="#{backing_teste.commandButton1}"
id="commandButton1"
action="#{backing_teste.commandButton1_action}"/>
</h:form></body>
</html>
</f:view>
<%-- 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");
}
}

-------------------
urubatan
Moderador
[Avatar]

Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline

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 )

[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
[WWW]
venomtotal
Java Ninja
[Avatar]

Membro desde: 24/04/2006 00:09:57
Mensagens: 298
Offline

PROBLEMA RESOLVIDO EM PARTE - Mas pode melhorar

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
capiwarrior
Entusiasta Java
[Avatar]

Membro desde: 19/10/2006 15:16:40
Mensagens: 15
Localização: Curitiba - PR
Offline

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.

Mauricio Couto Pelissari
----------------------------
http://capiwarrior.blogspot.com/
[Email] [WWW]
Ferryman
JavaGuru
[Avatar]

Membro desde: 26/10/2006 16:30:23
Mensagens: 220
Offline

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

Rafael Farias Silva (@rafaferry)

Jsigner - Engenharia reversa automática através do maven. Acesse http://code.google.com/p/jsigner
[Email] [WWW]
Ferryman
JavaGuru
[Avatar]

Membro desde: 26/10/2006 16:30:23
Mensagens: 220
Offline

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

Rafael Farias Silva (@rafaferry)

Jsigner - Engenharia reversa automática através do maven. Acesse http://code.google.com/p/jsigner
[Email] [WWW]
Abrhaao
Thread.start()
[Avatar]
Membro desde: 24/02/2005 13:33:14
Mensagens: 47
Offline

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?
gilliard_santos
JavaGuru
[Avatar]

Membro desde: 02/09/2004 12:35:28
Mensagens: 236
Localização: Campo Grande, MS
Offline

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.

http://gilliard.eti.br
[WWW]
leopose
Entusiasta Java

Membro desde: 14/06/2011 20:41:36
Mensagens: 19
Offline

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:


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


Desta forma funcionou e é bem simples.
 
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Ir para:   
Powered by JForum 2.1.8 © JForum Team