Meu primeiro topico aqui no forum,preciso da ajuda de voces…to fazendo um dinamic web project em flex4,com back em java e relatorios no ireport,o projeto ja esta pronto
mas estou setando o caminho dos relatorios estaticos,mas como vai ser rodado em servidores nao pode ser assim,ai criei uma classe servlet para obter o caminho da aplicaçao para passar este caminho na hora de gerar o relatorio:
preciso saber como chamo essa classe e esse metodo no flex4 de um botao para gerar esses relatorios,ja configurei o web.xml mapeando o servlet e tambem o remoting config,alguem pode me ajudar???
Se é uma servlet você pode chamar usando o navigateToUrl que irá chamar essa servlet em uma nova aba/janela do navegador. Esse servlet não precisa estar configurado no remoting-config.xml.
A pouco tempo estava tendo a mesma dúvida com o Flex 3 que acredito que a solução é a mesma então no meu caso eu precisa também passar um parametro para a servlet por isso meu código para chamar a servlet no flex ficou assim:
[code]public function gerarNovoRelatorio(numId:Number):void
{
var urlReq:URLRequest = new URLRequest(“relatorioos”); //no parametro define a url mapeada da sua servlet no meu caso relatorioos
var param:URLVariables = new URLVariables(); //se precisar enviar parametros para a servlet use esse objeto param.id = numId; //passagem de parametro o parametro enviado terá o nome de id
param.nome = “teste”; //outro parametro
urlReq.data = param; //adiciona os parametros
urlReq.method = "POST"; //usando método POST
navigateToURL(urlReq, "_blank"); //chama Servlet em uma nova página
}[/code]
acredito que irá te ajudar qualquer coisa é só perguntar ai
Perfeito,consegui faze chama a servlet,só que no meu caso eu preciso passar pelo Post um arraycollection que será meu datasource que eu passo para o ireport,o problema é que não achei nenhuma forma de passar outro tipo de dado a nao ser String…Existe uma forma de eu passa um array pelo post para eu setar no JRdatasource???
private function relatorios(event:MouseEvent):void {
var request:URLRequest = new URLRequest("ServletRelatorios");
var parametros:URLVariables = new URLVariables();
parametros.path = "teste";
parametros.listaNC = listNC; // MEU ARRAYCOLLECTION QUE TENHO Q PASSAR PARA O JRDATASOURCE
parametros.nomeCon = "teste";
request.method = "POST";
request.data = parametros;
navigateToURL(request,"_blank");
}
Olha dá uma olhada em JSONObject, da uma procurada ai no google, ele funciona da seguinte forma transforma objetos ou array em String e depois os converte.
Cara não precisa usar servelet
Você pode pegar o caminho relativo da tua aplicação.
[code] /**
* Pega o caminho de um arquivo no programa
* @param classe
* @param resource
* @return
*/
public URL getLocalURL(Class classe, String resource) {
Este método pega o caminho.
Mas vc tem fazer o seguinte, espelhar o pacote onde tem tua relatorio no javaSource vc espelha o com o mesmo nome de pacote, só que não precisa vc ter no javaResource uma classe, somente os relatorios.
Com relação aos parametros vc faz o seguinte.
Na Class classe vc passa o nome da tua classe no JavaSource. Então ficaria assim ClasseRelatotio.class e no resource vc passa o nome do teu relatorio mais a extensão dele.
O.o cara deu certinho aki,pra mim usa as servlets eu nao poderia passa um arraylist de objetos por meio do request entao larguei de mão as servlets,mas isso deu certinho pego o caminho relativo do meu diretorio… :lol: