Problema pro Flex mandar String(query) pro Java

0 respostas
G

Ola a todos !!!

Estou com problema para mandar, do Flex, uma String contendo a Query, para o Java. O java, por sua vez, esta mandando pro iReport passando o ResultSet, mas a query foi montada no Flex, pois lah q tenho as informacoes necessarias pra montar a query, E por isso que preciso q o Flex mande a String com a query pro java (sem precisar montar ela de novo no java - ate porque eu nao conseguiria).

A principio, estava passando a Query (do Flex pro Java) por parametro da url, mas percebi q o parametro limita a caractares e fez que "comesse" o fnal de uma query (essas funcoes sao dinamicas), por isso me obrigou a ter uma outra forma pra enviar a query do flex pro java.

Marcio passou esse topipco: http://www.guj.com.br/posts/list/209225.java que poderia servir pra mim tambem, mas nao consegui implementar no meu projeto (postei no final desse topico a minha duvida, mas sem respostas ate o momento).

Estou postando os programa pra ver se alguem teria alguma dica e fico MUITO AGRADECIDO desde ja.

1) FUNCAO QUE CHAMA O RELATORIO NO (FLEX P/ FLEX):
var PopUp_ExecRot710:Rotina710 = new Rotina710(); 
PopUp_ExecRot710.SetarUrl( wQuery , "relatorio?nome=Contrato"+
                                    "&banco=" +wBan+
                                    "&hst="   +wHst+
                                    "&dns="   +wDns+
                                    "&porta=" +wPor+
                                    "&usu="   +wUsu+
                                    "&senha=" +wSen+
                                    "&dtbase="+wDat);
                                    //"&query="+wQuery
PopUpManager.addPopUp(PopUp_ExecRot710,this,true);
PopUpManager.centerPopUp(PopUp_ExecRot710);
2) CHAMADA DO FLEX PRO JAVA:
<?xml version="1.0" encoding="utf-8"?>
<mx:Module layout="absolute" width="700" height="500"
	xmlns:mx="http://www.adobe.com/2006/mxml"
	xmlns:ns1="Componentes.Controles.*"
                xmlns:strz="Scripts.*"   >

	<mx:TitleWindow x="0" y="0" width="100%" height="100%" layout="absolute" title="Relatório." showCloseButton="true" close="Rotina710Sair()"	 >
		<ns1:IFrame x="0" y="0" width="100%" height="100%" source="{url}" id="iframe" >
		</ns1:IFrame>
	</mx:TitleWindow>

	<mx:Script>
		<![CDATA[
			import mx.managers.PopUpManager;
			import mx.controls.Alert;
			[Bindable] public var url:String;

			public function SetarUrl(query:String,url:String):void {
				this.url = url;
			}
			
			private function Rotina710Sair():void {
				iframe.dispose();
				PopUpManager.removePopUp(this);
			}
			
		]]>
	</mx:Script>
</mx:Module>
3) NO JAVA:
package com.cashonhand;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperRunManager;

@SuppressWarnings("serial")
public class Relatorio extends HttpServlet {

	private static String PathJava,PathFlex;
	private String Banco="",Hst="",Dns="",Porta="",Usu="",Senha="",Dtbase="",Query="";
	
	public Relatorio() {}

	@SuppressWarnings("static-access")
	public void service(HttpServletRequest request, HttpServletResponse response) {
		if ( this.PathJava == null && this.PathFlex == null ) {
			this.PathJava = this.getServletContext().getRealPath("WEB-INF/classes/");
			this.PathFlex = this.getServletContext().getRealPath("/assets");
		}
		Banco  = request.getParameter("banco").trim();
		Hst    = request.getParameter("hst").trim();
		Dns    = request.getParameter("dns").trim();
		Porta  = request.getParameter("porta").trim();
		Usu    = request.getParameter("usu").trim();
		Senha  = request.getParameter("senha").trim();
		Dtbase = request.getParameter("dtbase").trim();
		//Query  = request.getParameter("query").trim(); //request.getQueryString();
		String wNome  = request.getParameter("nome");
		if ( !wNome.isEmpty() ) {
			try {
				GeraRelatorio(wNome,request,response);
			}
			catch(JRException erro) {
				erro.printStackTrace();
			}
		}
	}
	
	@SuppressWarnings("static-access")
	public void GeraRelatorio(String relat,HttpServletRequest request, HttpServletResponse response) throws JRException { 
		String relatorio = PathJava+"/com/Relatorios/"+relat+".jasper";
		HashMap parametros = new HashMap();
		//JOptionPane.showMessageDialog(null,"2) "+Query);
		jConectaBanco oBanco = new jConectaBanco();
		oBanco.jConectaAoBanco(Banco,Hst,Dns,Porta,Usu,Senha,Dtbase,false);
		oBanco.jexecQuery(Banco,Hst,Dns,Porta,Usu,Senha,Dtbase,Query);
		JRResultSetDataSource jrRS = new JRResultSetDataSource( oBanco.oResultset );
		byte [] pdf_relat = JasperRunManager.runReportToPdf(relatorio,parametros,jrRS);
		MostrarRelatorio(pdf_relat,response);
		oBanco = null;
	}
	
	public void MostrarRelatorio(byte [] relatorio , HttpServletResponse response) {
		try {
			ServletOutputStream out = response.getOutputStream();
			response.setContentType("application/pdf");
			out.write(relatorio);
		}
		catch(IOException erro) {
			erro.printStackTrace();
		}
	}

}

toda ajuda eh bem vinda..

Obrigado

Gilberto

Criado 15 de dezembro de 2010
Respostas 0
Participantes 1