Achei um tutorial na net que usa um "visualizador" de relatório dentro do
flex Flex.

É só passar o xml.

Criei um servlet que está gerando o xml no browse.  E agora estou tentando
visualizar no flex. Abaixo o código.


*Chamada do formulário principal: *
var relatorio : xViewerSample = xViewerSample(PopUpManager.createPopUp(this,
xViewerSample, true));
PopUpManager.centerPopUp(relatorio);


*Código do MXML*

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009";
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:jrv="com.jaspersoft.reports.viewer.*"
               xmlns:valueObjects="valueObjects.*"
               xmlns:services="services.*"
               xmlns:mx="library://ns.adobe.com/flex/mx"  >

    <mx:Canvas left="20" right="20" top="20" bottom="8"
               borderStyle="solid" creationComplete="{httpService(event)}">
        <jrv:Viewer id="viewer" label="teste"/>
    </mx:Canvas>



    <fx:Script>
        <![CDATA[
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            import mx.controls.Alert;
            import mx.rpc.http.HTTPService;
            /**
             * Variavel que guarda um XML recebido por uma requisicao

             */
            [Bindable]
            private var xmlData:XML = null;


            /**
             * @description Esta funcao e' responsa'vel pela geracao da
             visualizacao
             * do relatorio
             * @return void
             */
            private function viewReport():void {
                viewer.disableJasperServer();
                viewer.showClassicToolbar();
                viewer.showReport(xmlData);
            }
            /**
             * @description Esta funcao manipula o resultado da requisicao
             * conventendo este resultado em um xml
             * @param ResultEvent - Evento lancado pelo metodo
             HTTPService.send()
             *  caso a requisicao obteve
             sucesso
             */
            private function resultHandler(event:ResultEvent):void{
                xmlData = event.result as XML;
                this.viewReport();
            }
            /**
             * @description Esta funcao mostra um alerta caso ocorra algum
             erro durante
             * a requisicao
             * @param FaultEvent - Evento lancado pelo metodo
             HTTPService.send()
             *     em caso a requisicao falhar
             */
            private function failRequest(event:FaultEvent):void{
                Alert.show("Ops! Houve algum erro ao processar a
REQUISIÇÃO.");
            }
            /**
             * @description Esta funcao realiza uma requisicao HTTP
             * @param Event - Evento lancado por alguma acao qualquer. Neste

             contexto
             * e um evento lancado por um Combobox que lista os relatorios
             *    disponiveis ao usuario.
             */
            private function httpService(event:Event):void{
                var httpService:HTTPService = new HTTPService();
                httpService.url= "http://localhost:8080/guia/servletGuia";
                httpService.resultFormat = "e4x";
                httpService.addEventListener(ResultEvent.RESULT,
                    this.resultHandler);
                httpService.addEventListener(FaultEvent.FAULT,
                    this.failRequest);

                httpService.send();
            }
        ]]>
    </fx:Script>
</s:Application>




Em 19 de outubro de 2010 13:57, Roger Rayner Cunha Bento <
[email protected]> escreveu:

>  Use Servlet.... eu faço a chamada assim... a servlet vc parametriza no
> web.xml conforme abaixo....
>
> web.xml
>
>
> <servlet>
>
> <servlet-name>ServletWeb</servlet-name>
>
> <servlet-class>*servlets*.reports.ServletWeb</servlet-class>
>
> </servlet>
>
> <servlet-mapping>
>
> <servlet-name>ServletWeb</servlet-name>
>
> <url-pattern>/ServletWeb</url-pattern>
>
> </servlet-mapping>
>
>
> chamada no controller.....
>
>
> *var* request:URLRequest = *new* URLRequest(*"/ImobiliariaWeb/ServletWeb"*);
> *//App/NomeDaSuaServlet no mapeamento do web.xml *
>
> request.method = URLRequestMethod.POST
>
> *var* variables:URLVariables = *new* URLVariables();
>
> variables.acao =
> *'ListagemBancos'*;
>
> variables.fl =
> *'codInicial='*+ txtCodigoIni.text + *'|'* + *'codFinal='* +
> txtCodigoFim.text; //*parametros do relatorio...; *
>
> request.data = variables;
>
> navigateToURL(request,
> *"_blank"*);
>
>
> Qualquer dúvida é só perguntar.....
>
>
> *Att., *
>
> *Roger Rayner*
>
> *Analista de Sistemas*
>
> TOTVS BAHIA
> ( 55 (71) 9616 - 6876
> + [email protected]
>
> Twitter:  www.twitter.com/rogerrayner
>
> **
>
>  ------------------------------
> *De:* [email protected] [[email protected]] em Nome de Bruno
> Ribeiro [[email protected]]
> *Enviado:* terça-feira, 19 de outubro de 2010 14:56
> *Para:* [email protected]
> *Assunto:* [flexdev] IReport no Flex
>
>  Fiz um relatório no Java, iReport, e não estou conseguindo executar via
> flex. Alguém sabe como posso realizar isso?
>
> Mais uma vez obrigado!!!
>
>
>  --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a