Eu estou tendo problemas ao passar multiplos parametros do servidor de firerentes classes java para um metódo JavaScript utilizando o Dwr. No caso gostaria de receber 2 parametros de callback em 1 metodo javascript , o que não está sendo possivel. Gostaria de fazer algo como :
ou se possivel fazer o callback retornar um valor para uma variavel , e não para o parametro de um metodo.
Se alguem pode me ajudar ???
Agradeço desde já.
Pode ser que você já saiba, mas dá pra retornar um java bean (ex: Pessoa, Conta, etc) pro javascript também. É só declarar um converter do DWR e utilizar o objeto de retorno no javascript acessando os atributos dele. Mas dependendo do caso, talvez tenha que usar um Map ou algo do tipo mesmo.
P
pallysson
Pois é , a primeira coisa que eu pensei foi a utilização do java bean, mas por algum motivo eu não estou conseguindo, posso esta fazendo alguma coisa errada, vou tentar aqui de novo pois com certeza essa é a melhor opção pra minha aplicação, muito obrigado , já me ajudou muitoo !!!
tuliomonteazul
Beleza, já deu uma olhada nesse link? Ele mostra como usar essa conversão dos beans e objetos java.
Se você tiver usando a versão 3 é tranquilo, basta usar @DataTransferObject na classe que vai ser convertida. Mais detalhes aqui.
P
pallysson
Nooo , ocm certeza, bom d+++ agora vou conseguir fazer a passagem com varias variaveis, obrigado mesmo !!!
P
pallysson
Ok , eu acho que consegui fazer o @DataTransferObject funcionar, mas não consigo acessar os atributos remotamente de jeito nenhum !!! poderiam me ajudar me dando um exemplo de como acessar um atributo da classe e recebendo em uma variavel java script ???
mais ou menos :
@DataTransferObjectpublicclassteste{@RemotePropertyprivateStringcasa;publicteste(){this.casa="frase de teste";}@RemotePropertypublicStringgetCasa(){returncasa;}}
e o código JavaScript algo como :
varaux=teste.getCasa();alert(aux);
e assim recebendo “frase de teste” no alerta. ???
tuliomonteazul
Cara, acho que você confundiu um pouco o @RemoteProperty com o @RemoteMethod.
Repara que naquele link o @RemoteProperty tá na seção de Object Conversion, ou seja, ele serve pra você indicar que aquela propriedade será convertida do Java Bean para o Objeto em Javascript.
Por exemplo:
Se você tem esse Java Bean:
@DataTransferObjectpublicclassTeste{@RemotePropertyprivateStringcasa;publicTeste(){this.casa="frase de teste";}@RemotePropertypublicStringgetCasa(){returncasa;}}
Então, eu já sabia fazer do jeito que você falou, mas eu precisava de guardar esse valor de retorno da classe em uma variável que esteja fora da chamada do metodo “Classe.metodo” que você criou , estou precisando desse valor para uma variavel global !! seria possivel ??? Ex :
ou algo do tipo que me permita utilizar o valor retornado como variavel global, estou precisando disso para conseguir guardar 2 matrizes em 2 variaveis e utiliza-las como parametros para outro metodo em javascript. Vlwwwww
tuliomonteazul
Hmm, acho que entendi. Sim, é possível você armazenar em uma variável global.
Mas você tem que ver que a variável aux só terá o valor que veio do Java depois que o callback for executado.
Então, supondo que você tenha a variável global aux, esse código não irá exibir o valor correto:
Classe.metodo(function(teste){
aux = teste.casa;
});
alert(aux);
Porque o alert será executado antes do retorno (callback) da execução do metodo.
P
pallysson
Então , isso mesmo, tenho certeza que desse jeito que eu te mostrei não vai funcionar já testei de varias maneiras, pensei que a solução seria a conversão da classe Java pra JavaScript como você havia me sugerido , assim acessando os atributos diretamente, mas não consegui de jeito nenhum. se é possível salvar em uma variável global , como isso pode ser feito ???
tuliomonteazul
Na verdade, esse código do último post armazena corretamente na variável global. O problema é só que o alert é executado antes.
Então é só chamar o seu método de dentro do callback.
Em exatamente que momento você precisa dessa variável?
P
pallysson
Eu preciso fazer o seguinte, fazer 2 classes em java fazer a leitura de alguns arquivos, efetuar alguns cálculos e cada uma delas vai me retornar uma matriz de dados, assim eu preciso fazer com que essas duas matrizes de retorno sejam utilizadas como parâmetros de entrada em uma função JavaScript . Eu até li a respeito de múltiplas variáveis como parâmetros, mas até agora nenhuma forma de se passar mais de 1 parâmetro do servidor, apenas vários do browser e 1 do servidor, então pensei que a solução seria armazenar essas matrizes de retorno inicialmente em variáveis globais, mas não estou conseguindo.!! Entendeu ??
Vlwwww
tuliomonteazul
Hmm… Você já tentou fazer o método Java retornar um Map? Mais ou menos como eu disse no começo desse post.
Porque daí você coloca as duas matrizes no map.
Ou então, é só chamar o primeiro método e no callback dele você chama o segundo. Por exemplo:
Classe.metodoUm(function(matriz1) {
// pronto, aqui você já tem a primeira matriz
Classe.metodoDois(function(matriz2) {
// aqui você já tem as duas matrizes e pode chamar a função que precisa delas
});
});
P
pallysson
Eu já tentei colocar uma função dentro do callback da outra, o problema é que quando você coloca a função JavaScript dentro do segundo callback não tem como você especificar qual vão ser os nomes dos parametros dos retornos ( callbacks ) o que impossibilita a utilização das duas matrizes ao mesmo tempo dentro da Função Java Script !!!
foda veiii auhhuahuauh