Bom dia pessoal,
Alguém sabe como posso chamar uma função javascript no onload da página e passar para essa função valores de uma variável de um bean?
Algo como:
<script>
function funcao(valor) {
alert(valor);
}
<body onload="funcao(#{bean.variavel});">
....conteudo da página....
</body>
Isso mesmo guimoz. Inicialmente eu havia pensando que o jsfunction só serviria para enviar informações ao Bean via javascript e isso seria o caminho inverso do que eu precisava. Contudo, olhando melhor a documentação consegui fazer o que eu precisava.
Apenas para deixar aqui a solução, segue um exemplo simples:
Bean
public class TesteBean {
private String variavel1;
public TesteBean() {
variavel1 = "Teste";
}
public String getVariavel1() {
return variavel1;
}
public void setVariavel1(String variavel1) {
this.variavel1 = variavel1;
}
}
tenho uma galeria em flash que aciona uma função JavaScript, passando 3 parâmetros
essa função recebe o valores e através da mesma função, será aberto um pop-up.
os 3 valores do parâmetro serão enviados para o pop-up.jsf
function LancamentoPopUp( id, unidade, empreendimento ){
window.open('popupLancamento.jsf?id='+id+';unidade='+unidade+';empreendimento='+empreendimento);
}
os exemplos que já analisei, são apenas utilizando 1 parâmetro.
para separar os parâmetro tentei utilizar o “&”, mas não funcionou!
devido ao delimitador requirido pelo Servlet
colocando o delimitar “;” funciona, mas quando tenho que pegá-lo com request.getParameter
os parametros não veem separados
verifiquei que esse problema ocorre só quando tento passar dentro da função JS,
pois em uma galeria em flash, no meu AS3 passo determinados parâmetros usando
o ‘&’ para passar mais de um parâmetro.
Estou com um probleminha! Preciso passar o tamanho da tela capturada via js como parâmetro num método do bean!
Tem como fazer isso??
<script language="JavaScript">
var width, height;
if (screen.width === 640 || screen.height === 480){
// alert("A resolução da tela do seu monitor é 640x480. Para ter uma visão total do site é recomendavel 800x600.")
}else if (screen.width === 800 || screen.height === 600){
// alert("A resolução da tela do seu monitor é 800x600. Você terá uma boa visão do site.")
}else if (screen.width === 1024 || screen.height === 768){
// alert("A resolução da tela do seu monitor é 1024x768. Você terá uma boa visão do site. RECOMENDÁVEL 800x600.")
}else if (screen.width === 1152 || screen.height === 864){
// alert("A resolução da tela do seu monitor é 1152x864. Você terá uma boa visão do site. RECOMENDÁVEL 800x600.")
}else{ //if all else
//alert("A resolução da tela do seu monitor é desconhecida. Para ter uma visão total do site é recomendavel 800x600.")
};
#{logar.tela(width,height)} //entra no método mas o valores são nulos, não reconhece as variáveis do js
</script>
No jsf, mesmo quando você seta um ID fixo para um campo, quando o jsp é compilado ele recebe um novo id, ficando “id do formulario dois pontos id do campo”.
Se você não definir nenhum id, para o form ou para o campo, o jsf vai gerar um numero aleatorio, tipo “_123:_779”.
Como o javascript trabalha no navegador do cliente (página já compilada) você precisa trabalhar com os ids do jsp compilado.
Depois que o seu campo hidden estiver com o valor, você vai precisar fazer o submit no formulário, seja clicando em um botão ou usando ajax.
Uma gambiarra que eu costumava fazer, quando eu não podia usar ajax, era fazer um outro javascript mandando clicar em um botão automaticamente.
Eu criava um outro botão normal, com action e actionlistener, mas deixava ele oculto por css (style=“display:none”), e no final do meu método javascript eu acionava esse botão document.getElementById(“form:botao”).click()