Dúvidas em programação Java para Web? Formação Java Web.
Sabe aquela velha dúvida quando se programa para WEB com Java, eu tenho uma variável em Javacript que precisa mudar o valor de uma variável Java (controller ou algum similar) ou simplesmente eu preciso chamar uma função Java através do Javascript? Alguém já deu uma olhada naqueles códigos Javascripts complicados usando Json, e que muitas vezes não funcionam no framework que usamos?
Sabe aquela velha dúvida quando se programa para WEB com Java, eu tenho uma variável em Javacript que precisa mudar o valor de uma variável Java (controller ou algum similar) ou simplesmente eu preciso chamar uma função Java através do Javascript? Alguém já deu uma olhada naqueles códigos Javascripts complicados usando Json, e que muitas vezes não funcionam no framework que usamos?
Recentemente me deparei com
um problema do tipo, eu precisava pegar dados que apenas poderiam ser obtidos
através de um Javascript no navegador,
mas esses dados precisariam ser atualizado em um objeto Java e tudo teria que
ser feito ao carregar a tela, ou seja no onload.
Depois de muito procurar, e
ver sugestões que não funcionaria muito bem para o meu caso e outras que eu
chamaria de “gambiarras” como colocar inputs hidden no meu xhtml, acabei descobrindo uma maneira de fazer até simples com
Richfaces (nada de variáveis ocultas, kk).
Acontece que Richfaces tem jsFunction, através dessa tag é criado uma função em Javascript que automaticamente faz uma chamada Ajax (ou seja, Javascript chama Java, podendo até esperar a resposta do Java, o jsFunction cria os JSON).
Como eu queria chamar a função ao carregar a página fiz da seguinte forma (mas pode se chamar através de um onclick, onblur, etc, vai da sua escolha ou necessidade):
Javascript:
window.onload
= function()
{
var x = ... // código java script
funcaoNome(x);
}
{
var x = ... // código java script
funcaoNome(x);
}
Fora da tag h:form (não sei se
faz diferença a posição):
<a:form>
<a:jsFunction name="funcaoNome" action="#{nomeClasseJava(action,bean,controller).metodo}" reRender="formNomeForm">
<a:actionparam name="param1" assignTo="#{nomeClasseJava(action,bean,controller).nomeDaVariavelASerModificadaNoJava}">// param necessário se quiser mudar valor de variável Java
</a:jsFunction><
/a:form>
<a:jsFunction name="funcaoNome" action="#{nomeClasseJava(action,bean,controller).metodo}" reRender="formNomeForm">
<a:actionparam name="param1" assignTo="#{nomeClasseJava(action,bean,controller).nomeDaVariavelASerModificadaNoJava}">// param necessário se quiser mudar valor de variável Java
</a:jsFunction><
/a:form>
Dentro da classe Java:
public void metodo()
{
...codigo metodo
}
{
...codigo metodo
}
Bem, essa foi a minha solução... O que acharam? Alguma dúvida?
Qualquer coisa é só comentar.
Dúvidas em programação Java para Web? Formação Java Web.
Nenhum comentário:
Postar um comentário