quarta-feira, 12 de agosto de 2009

Recebendo parâmetros via url

No navegador podemos executar um arquivo swf de duas formas, uma é chamando-o diretamente no campo de url, tipo: http://www.myhost.com/MyApp/MyApp.swf ou embutido numa página html como podemos ver no arquivo index.template.html da pasta html-template dos nossos projetos Flex.

Você passa parâmetros no padrão url: swf?parm1=valor1[&parm2=valor2][&parmN=valorN]

Exemplos:
link direto:
http://www.myhost.com/MyApp/MyApp.swf?id=1&uf=RS
html-template:
AC_FL_RunContent("src", "Teste?id=1&uf=RS", "flashVars", "t=50");

Nota:
via
html-template você pode usar src e flashVars juntos, mas se um parâmetro aparecer nos dois, valerá o do flashVars.

E agora no lado Flex você os recebe usando a propriedade parameters de Application.

10 comentários:

  1. Se for necessário pegar os parâmetros do Html wrapper uma boa referência é este blog do Erko Bridee:
    http://blog.erkobridee.com/2010/03/27/actionscript3-querystring/

    ResponderExcluir
  2. Outro link http://livedocs.adobe.com/flex/3/html/help.html?content=passingarguments_3.html

    ResponderExcluir
  3. Eduardo Cordeiro8 de julho de 2010 17:25

    É possível pegar o locale através do index.html e passar por parâmetro para a aplicação que é em GWT e utiliza swf, pois é no swf que eu preciso saber o locale do navegador do usuário.

    att. Eduardo Cordeiro

    ResponderExcluir
  4. Não conheço o GWT, mas se vc tiver como pegar via JS o locale do navegador e depois passar via parâmetro de url para o swf ou via flashVars aí dentro do swf é só pegar via parameters.

    ResponderExcluir
  5. Eduardo Cordeiro9 de julho de 2010 15:23

    Já consegui jogar o locale pra url, agora só falta pegar. Vou ver o que eu consigo aqui com a sua dica do parameters da App.

    Valeu ai pela força Fabio.

    abraçoss!

    ResponderExcluir
  6. Olá Fábio!

    Estou com um erro em uma aplicação já faz 2 dias, Tenho uma aplicação que acessa um banco de produção através de outro banco via dblink, funcionava tudo bem até três dias atrás, o erro que ocorre é o #2170, tenho crossdomain, as portas estão certas, e não consigo achar o erro, você teria alguma ideia do que seria?

    ResponderExcluir
  7. Andressa,
    Postei a resposta em:

    https://groups.google.com/forum/?hl=pt&fromgroups=#!topic/flexdev/gECt28I0Lek

    ResponderExcluir
  8. Mas segue abaixo:

    Por segurança o Flash player não permite acessar dados de outro servidor q não o de onde está hospedado, só é possível se no servidor q será acessado (no root ou no contexto web q está sendo acessado) houver um crossdomain.xml q informe q sua url é permitida.

    Alguns links q espero q lhe seja útil:
    http://www.igorcosta.com/por-que-da-erro-ao-carregar-um-feed-no-datagrid-do-flex/
    http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html
    http://blog.msdevstudio.net/2008/09/10/tutorial-crossdomainxml-nao-deixe-o-flex-complicar/

    ResponderExcluir
  9. Muito obrigado pela resposta, acho que esse é o caso, só que por segurança eu não posso ter acesso ao servidor que a aplicação acessa, então não posso colocar o cross domain lá, mas o que me intriga é ele ter funcionado por um bom tempo, mas falarei com o meu chefe para ele falar com o dba da empresa, porque acredito que o problema seja esse mesmo, muito obrigado mesmo!

    ResponderExcluir
  10. Andressa,

    O q vc pode fazer tb é usar o serviço de Proxy do BlazeDS ou solicitar para um serviço java do seu server onde este fará acesso ao servidor q vc precisa.

    ResponderExcluir